您的位置:首页 > 编程语言 > Java开发

邮件发送系统java源码

2010-11-28 21:15 459 查看
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();
}
});
}
}



内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: