前面介紹了電子郵件系統的基本知識,那篇博客知識對基礎理論知識做一些簡要介紹,并不妨礙我們做郵件開發?,F在開始Java郵件開發。
一、JavaMail簡介
JavaMail,顧名思義,提供給開發者處理電子郵件相關的編程接口。它是Sun發布的用來處理email的API。它可以方便地執行一些常用的郵件傳輸。JavaMail API是Sun公司為方便Java開發人員在應用程序中實現郵件發送和接收功能而提供的一套標準開發包,它支持一些常用的郵件協議,如:SMTP、POP3、IMAP。開發人員使用JavaMail API編寫郵件處理軟件時,無須考慮郵件協議底層的實現細節,只要調用JavaMail開發包中相應的API類就可以了。
二、JavaMail開發環境
在進行JavaMail開發之前必須要導入相應的jar包。該jar包可以到oracle的官網上面下載:http://www.oracle.com/technetwork/java/javamail/index.html。
下載完成后解壓可以得到如下一個目錄:

其中mail.jar:就是開發javamail程序所必須要用到的核心開發包。
demo子目錄:示例程序。
demo子目錄:示例程序。
lib子目錄:該目錄下包含5個獨立的郵件開發包:smtp.jar、pop3.jar、imap.jar和mailapi.jar,這5個jar文件是對mail.jar文件的分類包裝。其中mailapi.jar封裝了創建郵件內容和面向普通開發人員調用郵件發送和接收的API類,其它三個jar文件則是封裝了它們名稱相對應協議的服務實現程序。。在編譯Java郵件程序時,只需要mailapi.jar文件即可,但是,在運行時必須要有相應郵件協議的底層服務實現程序。如果應用程序中只需要使用到郵件發送功能,則可以只安裝smtp.jar和mailapi.jar這兩個文件,如果應用程序只需要使用郵件的接收功能,則可以只安裝pop3.jar或imap.jar和mailapi.jar這兩個jar文件,而不用安裝整個mail.jar文件。
Lib目錄如下:

三、JavaMail API的介紹
JavaMail API按其功能劃分通常分為如下三大類“:
1、創建和解析郵件內容的API。Message類是創建和解析郵件的核心API。它的實例對象代表了一封電子郵件。
2、發送郵件的API。Transport類是發送郵件的核心API類,它的實例對象代表實現了某個郵件發送協議的郵件發送對象,如SMTP協議。
3、接收郵件的API。Store類是接收郵件的核心API類,它的實例對象代表了實現某個郵件接收協議的郵件接收對象,例如POP3協議。
JavaMail的工作流程如下:

在這個工作流程中,Message、Session、Transport、Store四個對象緊密相連的完成一封電子郵件的發送和接收。我們只需要了解這個四個核心API的功能和作用,知道他們的工作關系和電子郵件的工作流程,就能夠很容易的編寫出JavaMail來了。對于JavaMail的輔助類而言,當我們需要他們的時候可以順藤摸瓜,查看文檔來解決。 核心API的介紹:
Message
Message 類是創建和解析郵件的核心API,它的實例對象代表一封電子郵件。在客戶端發送郵件時,先穿件郵件的API,將創建的郵件的數據封裝到Message對象中,然后把這個對象傳遞給郵件發送API發送出去。在客戶端接收到郵件時,郵件接收API把接收的油價數據裝在Message的實例對象中,客戶端在使用郵件解析API從這個對象中解析出來接收到的郵件數據。
Session
Session 類用于定義整個應用程序所需的環境信息,以及收集客戶端與郵件服務器建立網絡連接的會話信息,如郵件服務器的主機名、端口號、采用的郵件發送和接收協議等。Session對象根據這些會話信息構建郵件收發的Store和Transport對象,以及為客戶端創建Message對象提供信息支持。
Transport
Transport 類是發送郵件的核心API類,它的實例對象,代表實現了某個郵件發送協議的郵件發送對象,例如SMTP 協議。客戶端程序創建好Message對象后,只需要使用郵件發送API得到 Transport 對象,然后把 Message 對象傳遞給 Transport 對象,并調用它的發送方法,就可以把郵件發送給指定的SMTP服務器。
Store
Store 類是接收郵件的核心API類,它的實例對象代表實現某個郵件接收協議的郵件接收對象,例如POP3和IMAP協議??蛻舳顺绦蚪邮锗]件時,只需要使用郵件接收API得到Store對象,然后調用Store對象的接收方法,就可以從指定的 POP3服務器中獲得郵件數據,并把這些郵件數據封裝到表示郵件的Message對象中。
四、實例
public class JavaMail_01 { public static void main(String[] args) throws Exception { Properties props = new Properties(); props.setProperty("mail.smtp.auth", "true"); props.setProperty("mail.transport.protocol", "smtp"); Session session = Session.getInstance(props); session.setDebug(true); Message msg = new MimeMessage(session); msg.setSubject("這是一個測試程序...."); msg.setText("你好!這是我的第一個javamail程序---陳明"); msg.setFrom(new InternetAddress(******@163.com)); Transport transport = session.getTransport(); transport.connect("smtp.163.com", 25, "*******", "********"); transport.sendMessage(msg,new Address[]{new InternetAddress(chenssy995812509@sina.cn)}); System.out.println("郵件發送成功..."); transport.close(); } } |