zoukankan      html  css  js  c++  java
  • 基于java的邮件群发软件

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

    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,"请选择一行");
                     }
         }});
            
           

  • 相关阅读:
    Oracle根据两点经纬度计算距离(转载)
    TCP小见解
    git describe功能实现
    UE中基本图形的原始大小是多大
    SQL多行合并与HTML组装,不转义特殊字符
    磁盘空间不足引起ftp报"553 Could not create file"
    一键安装包安装lnmp
    宝塔面板(Linux版)安装与使用
    Redhat7-yum本地源安装配置
    Oracle数据库多个表空间使用情况查询
  • 原文地址:https://www.cnblogs.com/bestdata/p/3199796.html
Copyright © 2011-2022 走看看