forked from chenhaoxiang/Java
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathSendMailDemo.java
More file actions
143 lines (119 loc) · 5.09 KB
/
SendMailDemo.java
File metadata and controls
143 lines (119 loc) · 5.09 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
package cn.hncu;
import java.util.Properties;
import javax.activation.DataHandler;
import javax.activation.FileDataSource;
import javax.mail.Authenticator;
import javax.mail.PasswordAuthentication;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeBodyPart;
import javax.mail.internet.MimeMessage;
import javax.mail.internet.MimeMessage.RecipientType;
import javax.mail.internet.MimeMultipart;
import javax.mail.internet.MimeUtility;
import org.junit.Test;
import com.sun.mail.util.MailSSLSocketFactory;
public class SendMailDemo {
@Test//发送没有附件的邮件
public void send1() throws Exception{
//跟smtp服务器建立一个连接
Properties p = new Properties();
// 设置邮件服务器主机名
p.setProperty("mail.host", "smtp.qq.com");//指定邮件服务器,默认端口 25
// 发送服务器需要身份验证
p.setProperty("mail.smtp.auth", "true");//要采用指定用户名密码的方式去认证
// 发送邮件协议名称
p.setProperty("mail.transport.protocol", "smtp");
// 开启SSL加密,否则会失败
MailSSLSocketFactory sf = new MailSSLSocketFactory();
sf.setTrustAllHosts(true);
p.put("mail.smtp.ssl.enable", "true");
p.put("mail.smtp.ssl.socketFactory", sf);
// 开启debug调试,以便在控制台查看
//session.setDebug(true);也可以这样设置
//p.setProperty("mail.debug", "true");
// 创建session
Session session = Session.getDefaultInstance(p, new Authenticator() {
@Override
protected PasswordAuthentication getPasswordAuthentication() {
//用户名可以用QQ账号也可以用邮箱的别名
PasswordAuthentication pa = new PasswordAuthentication("chenhaoxiang0117", "jnjtrhojpxswbdab");
// 后面的字符是授权码,用qq密码不行!!
return pa;
}
});
session.setDebug(true);//设置打开调试状态
for (int i = 0; i <1; i++) {//发送几封邮件
//声明一个Message对象(代表一封邮件),从session中创建
MimeMessage msg = new MimeMessage(session);
//邮件信息封装
//1发件人
msg.setFrom(new InternetAddress("619699629@qq.com"));
//2收件人
msg.setRecipient(RecipientType.TO, new InternetAddress(
"chxpostbox@126.com"));
//3邮件内容:主题、内容
msg.setSubject("这是我用Java发来的邮件QQ....");
//msg.setContent("Hello, 今天没下雨!!!", "text/plain;charset=utf-8");//纯文本
msg.setContent(
"Hello <a href='http://www.baidu.com?id=ddd'>你好,快乐吗?<a/>",
"text/html;charset=utf-8");//发html格式的文本
//发送动作
Transport.send(msg);
}
}
@Test//发送含附件的邮件
public void send2() throws Exception{
//跟smtp服务器建立一个连接
Properties p = new Properties();
// 开启debug调试,以便在控制台查看
p.setProperty("mail.debug", "true");
p.setProperty("mail.host", "smtp.sina.com");//指定邮件服务器,默认端口 25
p.setProperty("mail.smtp.auth", "true");//要采用指定用户名密码的方式去认证
// 发送邮件协议名称
p.setProperty("mail.transport.protocol", "smtp");
// 开启SSL加密,否则会失败
MailSSLSocketFactory sf = new MailSSLSocketFactory();
sf.setTrustAllHosts(true);
p.put("mail.smtp.ssl.enable", "true");
p.put("mail.smtp.ssl.socketFactory", sf);
// 创建session
Session session = Session.getInstance(p);
// 通过session得到transport对象
Transport ts = session.getTransport();
// 连接邮件服务器:邮箱类型,帐号,授权码代替密码(更安全)
ts.connect("smtp.qq.com", "619699629", "jnjtrhojpxswbdab");
// 后面的字符是授权码,不能用qq密码
//声明一个Message对象(代表一封邮件),从session中创建
MimeMessage msg = new MimeMessage(session);
//邮件信息封装
//1发件人
msg.setFrom( new InternetAddress("619699629@qq.com") );
//2收件人
msg.setRecipient(RecipientType.TO, new InternetAddress("chxpostbox@126.com") );
//3邮件内容:主题、内容
msg.setSubject("这是我用Java发来的邮件--带附件的....");
//添加附件部分
//邮件内容部分1---文本内容
MimeBodyPart body0 = new MimeBodyPart(); //邮件中的文字部分
body0.setContent("这是两张<font color='red'>图片</font>....","text/html;charset=utf-8");
//邮件内容部分2---附件1
MimeBodyPart body1 = new MimeBodyPart(); //附件1
body1.setDataHandler( new DataHandler( new FileDataSource("./imgs/1.jpg")) );//./代表项目根目录下
body1.setFileName( MimeUtility.encodeText("中文1.jpg") );//中文附件名,解决乱码
//邮件内容部分3---附件2
MimeBodyPart body2 = new MimeBodyPart(); //附件2
body2.setDataHandler( new DataHandler( new FileDataSource("./imgs/2.jpg")) );
body2.setFileName("2.jpg");
//把上面的3部分组装在一起,设置到msg中
MimeMultipart mm = new MimeMultipart();
mm.addBodyPart(body0);
mm.addBodyPart(body1);
mm.addBodyPart(body2);
msg.setContent(mm);
// 发送邮件
ts.sendMessage(msg,msg.getAllRecipients());
ts.close();
}
}