邮件发送系统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();
}
});
}
}
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();
}
});
}
}
相关文章推荐
- 用java实现的邮件系统四 (javamail发送邮件)
- 用java实现的邮件系统六(javamail发送复杂邮件-带附件和html)
- java 邮件发送系统
- 使用java通过smtp完成发送邮件源码
- JAVA邮件发送(文字+图片+附件)【源码】
- 关于javaMail邮件发送系统
- 关于javaMail邮件发送系统
- java发送邮件jar包的配置及源码(重新整理)
- 【Java】纯底层SMTP实现邮件发送核心源码
- Java 邮件发送系统 -- JAVA 进阶
- 关于javaMail邮件发送系统
- Java发送邮件(将系统的异常信息发送到邮箱中)
- 使用java通过smtp完成发送邮件源码
- java发送邮件源码
- 在小型OA系统中使用Java发送邮件
- java发送邮件源码
- Android使用UncaughtExceptionHandler捕获全局异常 android获取手机信息大全Java追加文件内容使用JavaMail发送邮件OkHttp获取系统时间
- java实现系统捕获异常发送邮件案例
- 使用java底层实现邮件的发送(含测试,源码)