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 = "123456@qq.com";
13         String to = "123456@163.com";
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行即可,既然有發送郵件,當然也有接收郵件,下一篇JavaMail入門第四篇 接收郵件將介紹如何接收郵件。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM