邮件发送系统java源码

来源:互联网 发布:淘宝能卖视频违法吗? 编辑:程序博客网 时间:2024/05/09 13:48

package Email;

import java.awt.Container;
import java.awt.Dimension;
import java.awt.GridLayout;
import java.awt.Toolkit;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.Date;
import java.util.Properties;

import javax.mail.AuthenticationFailedException;
import javax.mail.Message;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.AddressException;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;
import javax.swing.*;
import javax.swing.JLabel;

public class SendMail extends JFrame implements Runnable{
private JMenuBar lan;

private JMenu canshu, bianji;

private JMenuItem pop3;

static SendMail main = new SendMail();

static ConnectConf conConf = new ConnectConf(main);

final JTextField textField_1 = new JTextField();
final JLabel label_2 = new JLabel();
final JTextArea textArea = new JTextArea();
final JScrollPane scrollPane = new JScrollPane();
final JTextField textField = new JTextField();
final JLabel label_4 = new JLabel();
public SendMail() {
   super("木人制作:邮件发送系统");
   Container c = getContentPane();
   lan = new JMenuBar();
   canshu = new JMenu("配置");
   pop3 = new JMenuItem("用户设置");
   pop3.addActionListener(new ActionListener() {
    public void actionPerformed(final ActionEvent e) {
     conConf.show();
    }
   });
   canshu.add(pop3);
   lan.add(canshu);
   setJMenuBar(lan);
   setSize(339, 434);
   getContentPane().setLayout(null);

   final JLabel label = new JLabel();
   label.setText("发件主题:");
   label.setBounds(4, 38, 66, 18);
   getContentPane().add(label);

   textField.setBounds(87, 36, 243, 22);
   getContentPane().add(textField);

   final JLabel label_1 = new JLabel();
   label_1.setText("发件内容:");
   label_1.setBounds(4, 62, 66, 18);
   getContentPane().add(label_1);
  
   scrollPane.setBounds(0, 86, 331, 252);
   getContentPane().add(scrollPane);

   scrollPane.setViewportView(textArea);
   Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();
   setLocation((int) (screenSize.width - 400) / 2 + 50,
     (int) (screenSize.height - 600) / 2 + 150);
   setVisible(true);
  
   label_2.setText("收件的邮箱:");
   label_2.setBounds(4, 7, 77, 18);
   getContentPane().add(label_2);

  
   textField_1.setBounds(87, 5, 192, 22);
   getContentPane().add(textField_1);

   final JButton button = new JButton();
   button.addActionListener(new ActionListener() {
    public void actionPerformed(final ActionEvent e) {
     Thread t= new Thread(main);
     t.start();
    }
   });
   button.setText("发送");
   button.setBounds(118, 344, 106, 22);
   getContentPane().add(button);

   final JLabel label_3 = new JLabel();
   label_3.setText("帮助");
   label_3.setToolTipText("QQ可以群发广告消息,例如: 10000 - 20000 系统会自动给 10001 10002 ...发送消息");
   label_3.setBounds(285, 7, 36, 18);
   getContentPane().add(label_3);

   label_4.setBounds(87, 64, 234, 18);
   getContentPane().add(label_4);
}

/**
* @param str_from:发件人地址
* @param str_to:收件人地址
* @param str_title:邮件标题
* @param str_content:邮件正文
*/
public static void send(String str_from, String str_to, String str_title,
    String str_content) {

   // str_content="<a href='www.163.com'>html元素</a>"; //for testing send
   // html mail!

   try {
    // 建立邮件会话
    Properties props = new Properties(); // 用来在一个文件中存储键-值对的,其中键和值是用等号分隔的,
    // 存储发送邮件服务器的信息
    props.put("mail.smtp.host", conConf.mailServer);
    // 同时通过验证
    props.put("mail.smtp.auth", "true");
    // 根据属性新建一个邮件会话
    Session s = Session.getInstance(props);
    s.setDebug(true); // 有他会打印一些调试信息。

    // 由邮件会话新建一个消息对象
    MimeMessage message = new MimeMessage(s);

    // 设置邮件
    InternetAddress from = new InternetAddress(str_from); // 282919088@163.com
    message.setFrom(from); // 设置发件人的地址
    //
    // //设置收件人,并设置其接收类型为TO
    try {
     InternetAddress to = new InternetAddress(str_to); // 282919088@163.com
     message.setRecipient(Message.RecipientType.TO, to);
    } catch (AddressException ex) {
     JOptionPane.showMessageDialog(null, "收件人地址错误");
    }
    // 设置标题
    message.setSubject(str_title); // java学习

    // 设置信件内容
    // message.setText(str_content); //发送文本邮件 //你好吗?
    message.setContent(str_content, "text/html;charset=gbk"); // 发送HTML邮件
    // //<b>你好</b><br><p>大家好</p>
    // 设置发信时间
    message.setSentDate(new Date());

    // 存储邮件信息
    message.saveChanges();

    // 发送邮件
    Transport transport = s.getTransport("smtp");
    // 以smtp方式登录邮箱,第一个参数是发送邮件用的邮件服务器SMTP地址,第二个参数为用户名,第三个参数为密码
    try {
     transport.connect(conConf.mailServer, conConf.mailCount,conConf.mailPassword);
     // 发送邮件,其中第二个参数是所有已设好的收件人地址
    } catch (AuthenticationFailedException ex) {
     JOptionPane.showMessageDialog(null, "发件人地址错误");
    }
    transport.sendMessage(message, message.getAllRecipients());
    transport.close();
   } catch (Exception e) {
    JOptionPane.showMessageDialog(null, "错误");
   }
}

public static void main(String[] args) {
   main.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}

public void run() {
   String str = textField_1.getText();
   if (str.matches("//d+-//d+")) {
    String string[] = str.split("-");
    int a = Integer.parseInt(string[0]);
    int b = Integer.parseInt(string[1]);
    label_4.setText("正在发送");
    int count=0;
    for (int i = a; i < b; i++) {
     try {
      count++;
      send(conConf.mailAddress, i + "@qq.com", textField.getText(), textArea.getText());
      label_4.setText("循环发送成功"+count+" 次");
     } catch (Exception ex) {
      ex.printStackTrace();
     }
    }
    label_4.setText("发送成功");
   } else {
    label_4.setText("正在发送");
    send(conConf.mailAddress, textField_1.getText(), textField
      .getText(), textArea.getText());
    label_4.setText("发送: "+textField_1.getText()+" 成功");
   }
}
}

class ConnectConf extends JDialog {
JPanel panelUserConf = new JPanel();

JButton save = new JButton();

JButton cancel = new JButton();

JPanel panelSave = new JPanel();

JLabel message = new JLabel();

public String mailAddress = "282919088@163.com";

public String mailCount = "282919088";

public String mailPassword = "***********";

public String mailServer = "smtp.163.com";

public JTextField inputIp;

public JTextField inputPort;

public JTextField user;

public JTextField pas;

public ConnectConf(JFrame frame) {
   super(frame, true);
   getContentPane().setLayout(null);
   try {
    jbInit();
   } catch (Exception e) {
    e.printStackTrace();
   }
   // 设置运行位置,使对话框居中
   Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();
   this.setLocation((int) (screenSize.width - 400) / 2 + 50,
     (int) (screenSize.height - 600) / 2 + 150);
   this.setResizable(false);
   final JLabel label = new JLabel(" 电子邮件账号:");
   label.setBounds(0, 51, 103, 22);
   getContentPane().add(label);
   pas = new JTextField();
   pas.setBounds(147, 79, 147, 22);
   getContentPane().add(pas);
   pas.setText(mailPassword);
   final JLabel label_1 = new JLabel(" 发送邮件密码:");
   label_1.setBounds(0, 83, 103, 18);
   getContentPane().add(label_1);
   user = new JTextField(mailCount);
   user.setBounds(148, 51, 146, 22);
   getContentPane().add(user);
   user.setText(mailCount);
}

private void jbInit() throws Exception {
   this.setSize(new Dimension(301, 177));
   this.setTitle("连接设置");
   message.setText(" 发送邮件服务器:");
   inputIp = new JTextField();
   inputIp.setText(mailServer);
   save.setText("保存");
   cancel.setText("取消");

   panelUserConf.setLayout(new GridLayout(2, 2, 1, 1));
   panelUserConf.setBounds(0, 0, 294, 45);
   panelUserConf.add(message);
   panelUserConf.add(inputIp);
   panelUserConf.add(new JLabel(" 发送邮件地址:"));
   panelSave.add(save);
   panelSave.setBounds(0, 107, 294, 38);
   panelSave.add(cancel);

   Container contentPane = getContentPane();
   contentPane.add(panelUserConf);
   inputPort = new JTextField();
   panelUserConf.add(inputPort);
   inputPort.setText(mailAddress);
   contentPane.add(panelSave);

   // 保存按钮的事件处理
   save.addActionListener(new ActionListener() {
    public void actionPerformed(ActionEvent a) {
     mailServer = inputIp.getText();
     mailAddress = inputPort.getText();
     mailCount = user.getText();
     mailPassword = pas.getText();
     dispose();
    }
   });

   // 取消按钮的事件处理
   cancel.addActionListener(new ActionListener() {
    public void actionPerformed(ActionEvent e) {
     dispose();
    }
   });
}
}


原创粉丝点击