Java邮件群发系统

简介: 最近工作需要,做一个邮件群发系统,功能实现邮件群发,右键删除全选等功能,大致设计如下:smtp设置窗口:发送页面:导入功能设计: final JButton importButton = new JButton("导入地址");        importButton.

最近工作需要,做一个邮件群发系统,功能实现邮件群发,右键删除全选等功能,大致设计如下:

smtp设置窗口:

发送页面:

导入功能设计:

 final JButton importButton = new JButton("导入地址");
        importButton.addActionListener(new ActionListener(){
         //添加事件
            public void actionPerformed(ActionEvent e){
             //TODO 读取excel文件,写入list
             JFileChooser fc=new JFileChooser();  
             int i=fc.showOpenDialog(scrollPane);  
             if(i==JFileChooser.APPROVE_OPTION){   
              File file=fc.getSelectedFile();
              if(file.toString().endsWith("xls")){
               String URL=file.getPath();   
                  try{
                   List<List<String>> list = ExcelCommonUtil.readExcelCommon(file.toString(),true);
                   
                   if(list==null || list.size()==0){
                    JOptionPane.showMessageDialog(null,"电子表格内容为空!");
                    return;
                   }
                   int listLength = list.size();
                       String [][] tableVales= new String[listLength][list.get(0).size()]; //数据
                       for(int j = 0; j < listLength;j++){
                          if(list.get(j).size()>0){
                           String id = OperateProperties.genId();
                       //tableVales[j][1]=list.get(j).get(excelCloumnId);
                       tableVales[j][1]=id;
                       if(list.get(j).size()>1){
                         tableVales[j][2]=list.get(j).get(excelCloumnEmail);
                        }else{
                         tableVales[j][2]= "";
                        }
                          }
                          int rowCount = table.getRowCount() +1;   //行数加上1
                       Object[] temp = {String.valueOf(rowCount),tableVales[j][1],tableVales[j][2],true,INITSTATUS};
                       tableModel.addRow(temp);
                        }
                       table.updateUI();
                  }catch(Exception e1){
                   e1.printStackTrace();
                   JOptionPane.showMessageDialog(null,"读取电子表格文件异常!");
                  }
                  
                  
              }else{
               JOptionPane.showMessageDialog(null,"必须是excel2003电子表格文件!");
              }
              
             }
            }
        });
        panel.add(importButton);
       

 

编辑发送功能:


大致功能就这些。

  final JButton sendButton = new JButton("编辑发送");
        sendButton.addActionListener(new ActionListener(){
         //添加事件
            public void actionPerformed(ActionEvent e){
              username = OperateProperties.ReadProperties(filename, "username");
              password = OperateProperties.ReadProperties(filename, "password");
              smtp = OperateProperties.ReadProperties(filename, "smtp");
              String excelCloumn = OperateProperties.ReadProperties(filename, "excelCloumnEmail");
              excelCloumnEmail = Integer.parseInt(excelCloumn);
             if(table.getRowCount()==0){
              JOptionPane.showMessageDialog(null,"电子邮件地址为空!");
              return;
             }
               //TODO 获取复选框值 tempList 供调用
           for(int i = 0;i<table.getRowCount();i++){
            if((Boolean)tableModel.getValueAt(i,3)){
             int key = i;
             String value = (String)tableModel.getValueAt(i, 2);
             tempMap.put(key, value);
            }
           }
           if(tempMap.size()<=0){
            JOptionPane.showMessageDialog(null,"请选择要发送的邮件地址!");
            return;
           }
           new Message();
           title = Message.getEmailCap();
                 content = Message.getContent();
                 fujian = Message.getFujian();
                 color = new String[table.getRowCount()];
                 if(title!=null&& content!=null){
                  buttonActionPerformed(e);
                 }
                 Message.setEmailCap(null);
                 Message.setContent(null);
                 Message.setFujian(null);
             }
             
        });
        panel.add(sendButton);

 

关键代码:

1.右键功能:

声明邮件菜单:

private JPopupMenu popupMenu;

初始化邮件菜单内容:

 //右键
        popupMenu = new JPopupMenu();
     del = new JMenuItem("删除");
     slectAll = new JMenuItem("全选");
     popupMenu.add(del);
     popupMenu.add(slectAll);

添加事件:

//删除事件
     del.addActionListener(new ActionListener() {     
      public void actionPerformed(ActionEvent e) {    
        int selectedRow = table.getSelectedRow();//获得选中行的索引
                 if(selectedRow!=-1)  //存在选中行
                 {
                  String id = (String) tableModel.getValueAt(selectedRow, 0);
                  String genId = (String) tableModel.getValueAt(selectedRow, 1);
                  String email = (String) tableModel.getValueAt(selectedRow, 2);
                  boolean select = (Boolean) tableModel.getValueAt(selectedRow, 3);
                  String status = (String) tableModel.getValueAt(selectedRow, 4);
                  Object[] temp = {id,genId,email,select,status};
                     tableModel.removeRow(temp);  //删除行
                     //强制刷新界面
         table.updateUI();
                 }else{
                  JOptionPane.showMessageDialog(null,"请选择一行");
                 }
     }});
        

相关文章
|
2月前
|
Java Apache Maven
Java百项管理之新闻管理系统 熟悉java语法——大学生作业 有源码!!!可运行!!!
文章提供了使用Apache POI库在Java中创建和读取Excel文件的详细代码示例,包括写入数据到Excel和从Excel读取数据的方法。
65 6
Java百项管理之新闻管理系统 熟悉java语法——大学生作业 有源码!!!可运行!!!
|
1月前
|
监控 Java API
如何使用Java语言快速开发一套智慧工地系统
使用Java开发智慧工地系统,采用Spring Cloud微服务架构和前后端分离设计,结合MySQL、MongoDB数据库及RESTful API,集成人脸识别、视频监控、设备与环境监测等功能模块,运用Spark/Flink处理大数据,ECharts/AntV G2实现数据可视化,确保系统安全与性能,采用敏捷开发模式,提供详尽文档与用户培训,支持云部署与容器化管理,快速构建高效、灵活的智慧工地解决方案。
|
3月前
|
前端开发 JavaScript Java
基于Java+Springboot+Vue开发的服装商城管理系统
基于Java+Springboot+Vue开发的服装商城管理系统(前后端分离),这是一项为大学生课程设计作业而开发的项目。该系统旨在帮助大学生学习并掌握Java编程技能,同时锻炼他们的项目设计与开发能力。通过学习基于Java的服装商城管理系统项目,大学生可以在实践中学习和提升自己的能力,为以后的职业发展打下坚实基础。
192 2
基于Java+Springboot+Vue开发的服装商城管理系统
|
26天前
|
设计模式 消息中间件 搜索推荐
Java 设计模式——观察者模式:从优衣库不使用新疆棉事件看系统的动态响应
【11月更文挑战第17天】观察者模式是一种行为设计模式,定义了一对多的依赖关系,使多个观察者对象能直接监听并响应某一主题对象的状态变化。本文介绍了观察者模式的基本概念、商业系统中的应用实例,如优衣库事件中各相关方的动态响应,以及模式的优势和实际系统设计中的应用建议,包括事件驱动架构和消息队列的使用。
|
1月前
|
运维 自然语言处理 供应链
Java云HIS医院管理系统源码 病案管理、医保业务、门诊、住院、电子病历编辑器
通过门诊的申请,或者直接住院登记,通过”护士工作站“分配患者,完成后,进入医生患者列表,医生对应开具”长期医嘱“和”临时医嘱“,并在电子病历中,记录病情。病人出院时,停止长期医嘱,开具出院医嘱。进入出院审核,审核医嘱与住院通过后,病人结清缴费,完成出院。
98 3
|
1月前
|
Java 数据库连接 数据库
深入探讨Java连接池技术如何通过复用数据库连接、减少连接建立和断开的开销,从而显著提升系统性能
在Java应用开发中,数据库操作常成为性能瓶颈。本文通过问题解答形式,深入探讨Java连接池技术如何通过复用数据库连接、减少连接建立和断开的开销,从而显著提升系统性能。文章介绍了连接池的优势、选择和使用方法,以及优化配置的技巧。
41 1
|
1月前
|
JavaScript Java 项目管理
Java毕设学习 基于SpringBoot + Vue 的医院管理系统 持续给大家寻找Java毕设学习项目(附源码)
基于SpringBoot + Vue的医院管理系统,涵盖医院、患者、挂号、药物、检查、病床、排班管理和数据分析等功能。开发工具为IDEA和HBuilder X,环境需配置jdk8、Node.js14、MySQL8。文末提供源码下载链接。
|
2月前
|
移动开发 前端开发 JavaScript
java家政系统成品源码的关键特点和技术应用
家政系统成品源码是已开发完成的家政服务管理软件,支持用户注册、登录、管理个人资料,家政人员信息管理,服务项目分类,订单与预约管理,支付集成,评价与反馈,地图定位等功能。适用于各种规模的家政服务公司,采用uniapp、SpringBoot、MySQL等技术栈,确保高效管理和优质用户体验。
|
2月前
|
XML JSON 监控
告别简陋:Java日志系统的最佳实践
【10月更文挑战第19天】 在Java开发中,`System.out.println()` 是最基本的输出方法,但它在实际项目中往往被认为是不专业和不足够的。本文将探讨为什么在现代Java应用中应该避免使用 `System.out.println()`,并介绍几种更先进的日志解决方案。
62 1
|
2月前
|
Java 关系型数据库 API
介绍一款Java开发的企业接口管理系统和开放平台
YesApi接口管理平台Java版,基于Spring Boot、Vue.js等技术,提供API接口的快速研发、管理、开放及收费等功能,支持多数据库、Docker部署,适用于企业级PaaS和SaaS平台的二次开发与搭建。