运行界面如下:
源代码如下:(本程序使用的是Merak mail server)
package
com.zzk;
/**
* @author 任文超
* @version 1.0
* */
import
java.awt.Color;
import
java.awt.EventQueue;
import
java.awt.Font;
import
java.awt.event.ActionEvent;
import
java.awt.event.ActionListener;
import
java.util.Date;
import
java.util.Properties;
import
javax.mail.Message;
import
javax.mail.Session;
import
javax.mail.Transport;
import
javax.mail.internet.InternetAddress;
import
javax.mail.internet.MimeMessage;
import
javax.swing.JButton;
import
javax.swing.JFrame;
import
javax.swing.JLabel;
import
javax.swing.JOptionPane;
import
javax.swing.JScrollPane;
import
javax.swing.JTextArea;
import
javax.swing.JTextField;
public
class
SendMailFrame
extends
JFrame {
private
JTextArea ta_text;
private
JTextField tf_title;
private
JTextField tf_send;
private
JTextField tf_receive;
private
Session session;
// 定义Session对象
private
String sendHost =
"localhost"
;
// 定义发送邮件的主机
private
String sendProtocol=
"smtp"
;
// 定义使用的发送协议
public
static
void
main(String args[]) {
EventQueue.invokeLater(
new
Runnable() {
public
void
run() {
try
{
SendMailFrame frame =
new
SendMailFrame();
frame.init();
frame.setVisible(
true
);
}
catch
(Exception e) {
e.printStackTrace();
}
}
});
}
/**
* Create the frame
*/
public
SendMailFrame() {
super
();
setTitle(
"发送邮件窗体"
);
getContentPane().setLayout(
null
);
setBounds(
100
,
100
,
439
,
299
);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
final
JLabel label =
new
JLabel();
label.setForeground(
new
Color(
0
,
0
,
255
));
label.setFont(
new
Font(
""
, Font.BOLD,
22
));
label.setText(
"发送电子邮件"
);
label.setBounds(
144
,
10
,
185
,
24
);
getContentPane().add(label);
final
JLabel label_1 =
new
JLabel();
label_1.setText(
"收件人地址:"
);
label_1.setBounds(
22
,
42
,
85
,
18
);
getContentPane().add(label_1);
tf_receive =
new
JTextField();
tf_receive.setBounds(
113
,
40
,
287
,
22
);
getContentPane().add(tf_receive);
final
JLabel label_2 =
new
JLabel();
label_2.setText(
"发件人地址:"
);
label_2.setBounds(
22
,
68
,
78
,
18
);
getContentPane().add(label_2);
tf_send =
new
JTextField();
tf_send.setBounds(
113
,
66
,
287
,
22
);
getContentPane().add(tf_send);
final
JLabel label_3 =
new
JLabel();
label_3.setText(
"主 题:"
);
label_3.setBounds(
32
,
92
,
66
,
18
);
getContentPane().add(label_3);
tf_title =
new
JTextField();
tf_title.setBounds(
113
,
94
,
287
,
22
);
getContentPane().add(tf_title);
final
JLabel label_4 =
new
JLabel();
label_4.setText(
"正 文:"
);
label_4.setBounds(
34
,
128
,
66
,
18
);
getContentPane().add(label_4);
final
JScrollPane scrollPane =
new
JScrollPane();
scrollPane.setBounds(
113
,
128
,
287
,
91
);
getContentPane().add(scrollPane);
ta_text =
new
JTextArea();
scrollPane.setViewportView(ta_text);
final
JButton btn_send =
new
JButton();
btn_send.addActionListener(
new
ActionListener() {
public
void
actionPerformed(
final
ActionEvent e) {
String fromAddr = tf_send.getText().trim();
String toAddr = tf_receive.getText().trim();
// 真实存在的目标邮件地址
String title = tf_title.getText().trim();
String text = ta_text.getText().trim();
try
{
sendMessage(fromAddr, toAddr, title, text);
}
catch
(Exception e1) {
e1.printStackTrace();
}
}
});
btn_send.setText(
"发 送"
);
btn_send.setBounds(
144
,
225
,
78
,
28
);
getContentPane().add(btn_send);
final
JButton btn_exit =
new
JButton();
btn_exit.addActionListener(
new
ActionListener() {
public
void
actionPerformed(
final
ActionEvent e) {
System.exit(
0
);
}
});
btn_exit.setText(
"退 出"
);
btn_exit.setBounds(
279
,
225
,
78
,
28
);
getContentPane().add(btn_exit);
}
public
void
init()
throws
Exception {
Properties props =
new
Properties();
// 创建属性对象
props.put(
"mail.transport.protocol"
, sendProtocol);
// 指定邮件传输协议
props.put(
"mail.smtp.class"
,
"com.sun.mail.smtp.SMTPTransport"
);
//指定传输协议使用的类
props.put(
"mail.smtp.host"
, sendHost);
// 定义发送邮件的主机
session = Session.getDefaultInstance(props);
// 创建Session对象
}
/**
* @param fromAddr 发送者
* @param toAddr 接收者
* @param title 主题
* @param text 内容
* @throws Exception 异常
*/
public
void
sendMessage(String fromAddr,String toAddr,String title,String text)
throws
Exception {
Message msg =
new
MimeMessage(session);
// 创建Message对象
InternetAddress[] toAddrs = InternetAddress.parse(toAddr,
false
);
// 创建接收方的InternetAddress对象
msg.setRecipients(Message.RecipientType.TO, toAddrs);
// 指定接收方
msg.setSentDate(
new
Date());
// 指定接发送日期
msg.setSubject(title);
// 设置主题
msg.setFrom(
new
InternetAddress(fromAddr));
// 指定发送者
msg.setText(text);
// 指定发送内容
Transport.send(msg);
// 发送邮件
JOptionPane.showMessageDialog(
null
,
"邮件发送成功。"
);
}
}