前言
大家請注意:以下代碼使用的測試郵箱為126的郵箱,實測可用,注意,個人測試時,注意發(fā)送的郵件內容,郵件內容郵箱服務器審查較嚴格,少有不慎就會被判定為垃圾郵件,進而就會給你返回一個錯誤碼:
實例代碼
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
|
import java.util.Date; import java.util.Properties; import javax.mail.Authenticator; import javax.mail.Message; 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.MimeMultipart; import javax.mail.internet.MimeUtility; public class SendMailUtil { private static final String USERNAME = "用戶名" ; // 發(fā)送人的用戶名 private static final String PASSWORD = "密碼" ; // 發(fā)送郵件人的密碼 private static final String HOSTNAME = "smtp.126.com" ; // smtp服務器地址 private static final String FROMADDRESS = USERNAME + "@126.com" ; // 發(fā)件人郵箱 private static final String FROMUSERNAME = "CNCD-碼上中國博客" ; // 發(fā)件人姓名,可隨意寫 private static final String EMAILTITLE = "碼上中國博客" ; // 郵件標題 private static final String EMAILCONTENT = "歡迎使用 CNCD-碼上中國博客激活郵件 ,請點擊右側鏈接完成賬號激活:\n" ; // 郵件內容 public static void main(String[] args) { try { sendEmail( "825338623@qq.com" , "用戶名:guopengfei,密碼:guopengfei" ); } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } } /** * 發(fā)送郵件 * @param sendAddress 要發(fā)送的郵箱地址 * @param content 發(fā)送的內容 * @throws Exception */ public static void sendEmail(String sendAddress, String content) throws Exception { // 創(chuàng)建一個連接屬性。 Properties props = new Properties(); // props.put( "mail.smtp.host " , HOSTNAME); // 設置smtp的服務器地址是smtp.126.com props.put( "mail.smtp.auth" , "true" ); // 設置smtp服務器要身份驗證。 props.put( "mail.transport.protocol" , "stmp" ); Session session = Session.getInstance(props, new Authenticator() { protected PasswordAuthentication getPasswordAuthentication() { return new PasswordAuthentication(USERNAME, PASSWORD); } }); Message message = new MimeMessage(session); InternetAddress from = new InternetAddress(FROMADDRESS); // 發(fā)送人地址 from.setPersonal(MimeUtility.encodeText(FROMUSERNAME)); // 發(fā)件人名 message.setFrom(from); // InternetAddress to = new InternetAddress("taozhida11@sina.cn"); // //收件人地址 // 創(chuàng)建郵件體: message.setRecipients(Message.RecipientType.TO, InternetAddress.parse(sendAddress)); // 抄送給多個人的郵箱 // message.setRecipient(Message.RecipientType.TO, to); // 只有抄送給自己的郵箱 message.setSubject(MimeUtility.encodeText(EMAILTITLE)); // 郵件標題 message.setSentDate( new Date()); MimeMultipart msgMultipart = new MimeMultipart( "mixed" ); // 指定為混合關系 message.setContent(msgMultipart); // 郵件內容 MimeBodyPart htmlPart = new MimeBodyPart(); htmlPart.setContent( "<body><div style='width: 1000px;height: 300px;margin: 0px auto;margin-bottom:20px;border:1px solid #92B0DD;background-color: #FFFFFf;'><h3>這是系統(tǒng)自動發(fā)送的郵件,請勿回復!</h3><br/>" + content+ "</div></body>" , "text/html;charset=UTF-8" ); // TODO 組裝的順序非常重要,一定要先組裝文本域,再組裝文件 msgMultipart.addBodyPart(htmlPart); // 組裝附件 // MimeBodyPart file = new MimeBodyPart(); // FileDataSource file_datasource = new FileDataSource( // "D:\\report_data2.txt"); // DataHandler dh = new DataHandler(file_datasource); // file.setDataHandler(dh); // // 附件區(qū)別內嵌內容的一個特點是有文件名,為防止中文亂碼要編碼 // file.setFileName(MimeUtility.encodeText(dh.getName())); // msgMultipart.addBodyPart(file); message.saveChanges(); // 發(fā)送郵件的過程:95188 Transport transport = session.getTransport( "smtp" ); // 創(chuàng)建連接 transport.connect(HOSTNAME, 25 , USERNAME, PASSWORD); // 連接服務器 // 服務名,端口,發(fā)送郵件用戶名 // (不要@后面),密碼 transport.sendMessage(message, message.getAllRecipients()); // 發(fā)送信息 transport.close(); // 關閉 System.out.println( "發(fā)送完畢" ); } } |
注意,首次使用本代碼的朋友們,建議除了用戶名和密碼換成自己的,其余的最好先不要改,否則很容易被網易郵箱判定為垃圾郵件而不給發(fā)送,一般判定為垃圾郵件時,網易返回的錯誤碼如下:
1
2
3
4
5
6
7
|
com.sun.mail.smtp.SMTPSendFailedException: 554 DT:SPM 126 smtp2,DMmowACXoTzMk8VXVdKnEA--.1778S2 1472566222 ,please see http: //mail.163.com/help/help_spam_16.htm?ip=117.114.147.13&hostid=smtp2&time=1472566222 at com.sun.mail.smtp.SMTPTransport.issueSendCommand(SMTPTransport.java: 1829 ) at com.sun.mail.smtp.SMTPTransport.finishData(SMTPTransport.java: 1634 ) at com.sun.mail.smtp.SMTPTransport.sendMessage(SMTPTransport.java: 889 ) at SendMailUtil.sendEmail(SendMailUtil.java: 88 ) at SendMailUtil.main(SendMailUtil.java: 29 ) |
意思是說,讓你前往錯誤返回碼中的鏈接里查看幫助信息,你可以進入鏈接,發(fā)現,就有上述554的錯誤碼代表的意思。這種情況一般就是被判定為垃圾郵件了。
其次,測試時不要頻繁運行(發(fā)送)上述代碼中的郵件,太頻繁了,也容易判定為垃圾郵件。好了,以上就是這篇文章的全部內容了,希望對大家的學習和工作能有所幫助。