直接上源碼:
1. 郵件的基本信息(方便就直接設置為靜態了)
下面最好是做為一個javabean
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
|
package com.lgf.Email; import java.util.Date; public class EmailMessage { /** * 郵件的信息,可以自己進行設置。 * 為了方便直接全部設置為靜態 */ // 收件人郵箱 // 發件人郵箱 public static String FROM_NAME = "xxx" ; // 抄送人 // 暗送人 // 郵件的類型 public static String Email_Content = "text/plain" ; // 郵件標題 public static String Email_Subject = "Test Email With JavaMail" ; // 郵件頭 public static String Email_Header = "This Is Email Header" ; // 內容 public static String Email_Body = "<a href=\"http://www.baidu.com\">This Is Email Body</a>" ; // 服務器 比如QQ的可以設置為smtp.qq.com public static String Email_Host = "smtp.xxx.com" ; // 發送時間 public static Date sendDate = new Date(); // 是否需要驗證用戶名和密碼 public static boolean validate = true ; } |
2. 服務器驗證(就是一般登入時候的用戶名和密碼)
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
|
package com.lgf.Email; import javax.mail.Authenticator; import javax.mail.PasswordAuthentication; /** * 用戶名和密碼的驗證 * @author lgf * */ public class MailAuthenticator extends Authenticator{ private String username= "xxxxx" ; private String password= "xxxxx" ; public MailAuthenticator() { super (); } /** * 設置驗證的用戶名和密碼 */ public MailAuthenticator(String userName , String password) { super (); this .username = userName; this .password = password; } protected PasswordAuthentication getPasswordAuthentication() { return new PasswordAuthentication( this .username, this .password); } } |
3. 發送郵件前設置信息和步驟
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
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
|
package com.lgf.Email; import java.util.Properties; import javax.activation.DataHandler; import javax.activation.DataSource; import javax.activation.FileDataSource; import javax.mail.Address; import javax.mail.Authenticator; import javax.mail.BodyPart; import javax.mail.Message; import javax.mail.Multipart; 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 com.lgf.SendEmail.MailAuthenticator; public class SendEmail { /** * 發送普通郵件 * @throws Exception */ public void doSendNormalMail() { // 獲取系統環境 Properties prop = new Properties(); Authenticator auth = null ; // 判斷發送郵件是否需要驗證 if (EmailMessage.validate) { // 郵件服務器認證 用戶名和密碼 auth = new MailAuthenticator(); } // 添加必要的信息 prop.put( "mail.smtp.host" , EmailMessage.Email_Host); prop.put( "mail.smtp.auth" , "true" ); // 設置對話和郵件服務器進行通訊 Session session = Session.getDefaultInstance(prop, auth); // 在控制臺顯示Debug信息 session.setDebug( true ); // 設置郵件對象 Message message = new MimeMessage(session); try { // 設置郵件主題 message.setSubject(EmailMessage.Email_Subject); // 設置郵件標題 message.setHeader( "Header" , EmailMessage.Email_Header); // 設置發送時間 message.setSentDate(EmailMessage.sendDate); // 設置發信人地址 和 名字 Address address = new InternetAddress(EmailMessage.FROM, EmailMessage.FROM_NAME); // 把發件人信息添加到信息中 message.setFrom(address); // 設置發件人地址 Address toAddress = new InternetAddress(EmailMessage.TO); // 設置接收人地址 message.setRecipient(Message.RecipientType.TO, toAddress); // 設置多個收件人地址 // message.addRecipient(Message.RecipientType.TO,new InternetAddress("[email protected]")); // 設置郵件格式 message.setContent( "Content" , EmailMessage.Email_Content); // 設置郵件內容 必須在設置文件格式后面 message.setText(EmailMessage.Email_Body); // 保存上面添加的信息 message.saveChanges(); // 發送郵件 System.out.println( "sendNormalEmail() 開始發送郵件……" ); Transport.send(message); System.out.println( "發送成功!" ); } catch (Exception e) { System.out.println( "出錯" ); e.printStackTrace(); } } /** * 發送HTML格式的郵件 */ public void doSendHtmlMail() { // 獲取系統環境 Properties prop = new Properties(); Authenticator auth = null ; if (EmailMessage.validate) { // 郵件服務器認證 用戶名和密碼 auth = new MailAuthenticator(); } // 添加必要的信息 prop.put( "mail.smtp.host" , EmailMessage.Email_Host); prop.put( "mail.smtp.auth" , "true" ); // 設置對話和郵件服務器進行通訊 Session session = Session.getDefaultInstance(prop, auth); // 設置郵件對象 Message message = new MimeMessage(session); try { // 設置郵件主題 message.setSubject(EmailMessage.Email_Subject); // 設置郵件標題 message.setHeader( "Header" , EmailMessage.Email_Header); // 設置發送時間 message.setSentDate(EmailMessage.sendDate); // 設置發信人地址 和 名字 Address address = new InternetAddress(EmailMessage.FROM, EmailMessage.FROM_NAME); // 把發件人信息添加到信息中 message.setFrom(address); // 設置發件人地址 Address toAddress = new InternetAddress(EmailMessage.TO); // 設置接收人地址 message.setRecipient(Message.RecipientType.TO, toAddress); // 設置多個收件人地址 // message.addRecipient(Message.RecipientType.TO,new InternetAddress("[email protected]")); // 設置發送信息的內容 下面為發送hmml // 設置郵件格式 EmailMessage.Email_Content = "text/html; charset=utf-8" ; message.setContent(EmailMessage.Email_Body, EmailMessage.Email_Content); // 保存上面添加的信息 message.saveChanges(); // 發送郵件 System.out.println( "doSendHtmlMail() 開始發送郵件……" ); Transport.send(message); System.out.println( "發送成功!" ); } catch (Exception e) { System.out.println( "出錯" ); e.printStackTrace(); } } /** * 發送帶有附件格式的郵件 */ public void doSendAttachmentMail() { // 獲取系統環境 Properties prop = new Properties(); Authenticator auth = null ; if (EmailMessage.validate) { // 郵件服務器認證 用戶名和密碼 auth = new MailAuthenticator(); } // 添加必要的信息 prop.put( "mail.smtp.host" , EmailMessage.Email_Host); prop.put( "mail.smtp.auth" , "true" ); // 設置對話和郵件服務器進行通訊 Session session = Session.getDefaultInstance(prop, auth); // 設置郵件對象 Message message = new MimeMessage(session); try { // 設置郵件主題 message.setSubject(EmailMessage.Email_Subject); // 設置郵件標題 message.setHeader( "Header" , EmailMessage.Email_Header); // 設置發送時間 message.setSentDate(EmailMessage.sendDate); // 設置發信人地址 和 名字 Address address = new InternetAddress(EmailMessage.FROM, EmailMessage.FROM_NAME); // 把發件人信息添加到信息中 message.setFrom(address); // 設置發件人地址 Address toAddress = new InternetAddress(EmailMessage.TO); // 設置接收人地址 message.setRecipient(Message.RecipientType.TO, toAddress); // 設置多個收件人地址 // message.addRecipient(Message.RecipientType.TO,new InternetAddress("[email protected]")); // 設置發送信息的內容 下面為發送附件 message.setContent(EmailMessage.Email_Body, EmailMessage.Email_Content); BodyPart messageBodyPart = new MimeBodyPart(); messageBodyPart.setText( "bodypart" ); Multipart multipart = new MimeMultipart(); multipart.addBodyPart(messageBodyPart); messageBodyPart = new MimeBodyPart(); // 設置上傳的資源 DataSource source = new FileDataSource( "E:\\3.doc" ); // 添加到 messageBodyPart.setDataHandler( new DataHandler(source)); // 設置文件名稱,記得后綴名 messageBodyPart.setFileName( "test.doc" ); multipart.addBodyPart(messageBodyPart); message.setContent(multipart); // 保存上面添加的信息 message.saveChanges(); // 發送郵件 System.out.println( "doSendAttachmentMail() 開始發送郵件……" ); Transport.send(message); System.out.println( "發送成功!" ); } catch (Exception e) { System.out.println( "出錯" ); e.printStackTrace(); } } /** * @param args */ public static void main(String[] args) { // new SendEmail().doSendNormalMail(); // new SendEmail().doSendHtmlMail(); new SendEmail().doSendAttachmentMail(); } } |
以上就是Java發送郵件javax.mail的詳細代碼,希望對大家實現java郵件發送有所幫助。