第三講:JavaMail中Session類
mail.jar架包中的javax.mail.Session類用于定義整個JavaMail應用程式所需要的環境資訊,以及收集用戶端與郵件伺服器建立網絡連接配接的會話資訊。例如郵件伺服器的主機名、端口号、采用的郵件發送和接收協定等。同時Session對象根據這些資訊建構用于郵件收發的Transport和Store對象,以及為用戶端建立Message對象時提供資訊支援。
一、Session常用函數 下面的表格中列出了Session常用的方法。包括擷取Transport、Stored對象等
public static getInstance(java.util.Properties) public static getInstance(java.util.Properties ,Authenticator) | 擷取Session對象的方法,由于Session的構造方法是私有的是以隻能通過靜态方法擷取 |
public static getDefalutInstance(java.util.Properties) public static getDefaultInstance(Properties ,Authenticator) | |
getTransport() getTransport(java.lang.String protocol) | 預設根據mail.transport.protocol屬性中的協定建立。 傳回實作了指定的具體郵件發送協定的Transport對象。Transport是抽象類,兩個方法傳回的都是實作某種協定的Transport的子類 |
getStore() getStore(java.lang.String protocol) | 預設根據mail.store.protocol屬性中的協定建立接收郵件對象。 傳回實作了指定具體郵件接收協定的Store對象。Store也是抽象類,兩個方法傳回的都是實作某種協定的Store的子類 |
setDebug(boolean debug) | 當設定為true時,JavaMail AP就會将其運作過程和郵件伺服器的互動指令資訊輸出到運作視窗中,用于JavaMail的調試有用。 |
PS:getInstance和getDefaultInstance方法的差別在于:getDefaultInstance方法傳回一個Session對象後,将這個Session對象安裝為預設的Session對象,以後每次調用getDefaultInstance方法都将傳回這個預設Session對象;而getInstance方法則是每次調用都傳回一個新的Session對象。
1.1 參數Properties 對Properties類中可以通過setProperty(String key, String value)方法進行設定,其取值包括 :

1.2 參數Authenticator 在JavaMail中除了可以通過Transport.connect(host, user, passqord)方法在連接配接SMTP伺服器是直接傳遞使用者認證資訊還可以借助Authenticator類來 擷取使用者認證資訊 當使用Session的getInstance(properties, Authenticator)來建立Session對象時,會将Authenticator對象注冊到該Session。以後這個Session對象的JavaMail用戶端程式要向郵件伺服器送出認證資訊時,将調用該Session對象中注冊的Authenticator對象,從中擷取使用者認證資訊後傳遞給郵件伺服器。
Authenticator類最常用的一個方法是: protected PasswordAuthentication getPasswordAuthentication(); Authenticator類是抽象類,傳遞給getInstance方法的Authenticator對象隻能是其子類的執行個體對象。Authenticator對定義的該方法的傳回值為null,是以其子類必 須覆寫該方法,由郵件開發人來實作。
PasswordAuthentication類中的方法有:
public PasswordAuthentication(String userName, String password) |
public String getUserName(); |
public String getPassword(); |