程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> JAVA編程 >> JAVA綜合教程 >> JavaMail入門第三篇 發送郵件,javamail入門第三篇

JavaMail入門第三篇 發送郵件,javamail入門第三篇

編輯:JAVA綜合教程

JavaMail入門第三篇 發送郵件,javamail入門第三篇


JavaMail API中定義了一個java.mail.Transport類,它專門用於執行郵件發送任務,這個類的實例對象封裝了某種郵件發送協議的底層實施細節,應用程序調用這個類中的方法就可以把Message對象中封裝的郵件數據發送到指定的SMTP服務器。使用JavaMail發送郵件時設計到的主要API之間的工作關系如下所示:

 

1、從Session對象中獲得實現了某種郵件發送協議的Transport對象;

2、使用Session對象創建Message對象,並調用Message對象的方法封裝郵件數據;

3、連接指定的SMTP服務器,調用Transport對象中的郵件發送方法Message對象中封裝的郵件數據。

在JavaMail入門第二篇 創建郵件一文中,我們學會了創建郵件,不過當時我們是將郵件寫入到我們的本地磁盤中,接下來我們用JavaMail API提供的Transport類來發送郵件

 1 import java.util.Date;
 2 import java.util.Properties;
 3 
 4 import javax.mail.Message;
 5 import javax.mail.Session;
 6 import javax.mail.Transport;
 7 import javax.mail.internet.InternetAddress;
 8 import javax.mail.internet.MimeMessage;
 9 
10 public class SendTextMail {
11     public static void main(String[] args) throws Exception {
12         String from = "[email protected]";
13         String to = "[email protected]";
14         String subject = "test";
15         String body = "test!!!";
16         String smtpHost = "smtp.qq.com";
17 
18         Properties props = new Properties();
19         props.setProperty("mail.transport.protocol", "smtp"); // 使用的協議(JavaMail規范要求)
20         props.setProperty("mail.smtp.host", smtpHost); // 發件人的郵箱的 SMTP服務器地址
21         props.setProperty("mail.smtp.auth", "true"); // 請求認證,參數名稱與具體實現有關
22 
23         // 創建Session實例對象
24         Session session = Session.getDefaultInstance(props);
25         // 創建MimeMessage實例對象
26         MimeMessage message = new MimeMessage(session);
27         // 設置發件人
28         message.setFrom(new InternetAddress(from));
29         // 設置收件人
30         message.setRecipients(Message.RecipientType.TO, InternetAddress.parse(to));
31         // 設置發送日期
32         message.setSentDate(new Date());
33         // 設置郵件主題
34         message.setSubject(subject);
35         // 設置純文本內容的郵件正文
36         message.setText(body);
37         // 保存並生成最終的郵件內容
38         message.saveChanges();
39         // 設置為debug模式, 可以查看詳細的發送 log
40         session.setDebug(true);
41         // 獲取Transport對象
42         Transport transport = session.getTransport("smtp");
43         // 第2個參數需要填寫的是QQ郵箱的SMTP的授權碼,什麼是授權碼,它又是如何設置?
44         transport.connect(from, "****************");
45         // 發送,message.getAllRecipients() 獲取到的是在創建郵件對象時添加的所有收件人, 抄送人, 密送人
46         transport.sendMessage(message, message.getAllRecipients());
47         transport.close();
48     }
49 }

注意:郵箱賬號必須要開啟SMTP服務。

發送帶內嵌資源或者是帶附件的復雜郵件代碼與JavaMail入門第二篇 創建郵件一文中類似,只是將寫入硬盤的步驟替換成上面代碼中的42-47行即可。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved