国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

JavaMail使用3 -- 核心類介紹

2019-11-17 04:07:20
字體:
來源:轉載
供稿:網友
1.session
       Session 類定義了一個基本郵件會話(session),是java Mail API最高層入口類。所有其它類都是經由這個session 才得以生效。Session 對象用 Java.util.PRoperties 對象獲取信息,如郵件服務器、用戶名、密碼及整個應用程序中共享的其它信息。
2.Message類
當我們建立了Session對象后,便可以被發送的構造信息體了。在這里SUN提供了Message類型來幫助開發者完成這項工作。由于Message是一個抽象類,大多數情況下,我們使用javax.mail.internet.MimeMessage這個子類,MimeMessage 是個能理解 MIME 類型和頭的電子郵件消息,該類是使用MIME類型、MIME信息頭的郵箱信息。信息頭只能使用US-ASCII字符,而非ASCII字符將通過編碼轉換為ASCII的方式使用。
3.Address類
一旦您創建了 Session 和 Message,并將內容填入消息后,就可以用 Address 確定信件地址了。和 Message 一樣,Address 也是個抽象類。您用的是 Javax.mail.internet.InternetAddress
郵件地址類,像Message一樣,Address類也是一個抽象類,所以我們將使用javax.mail.internet.InternetAddress這個子類。
4.Authenticator類
像java.net類那樣,JavaMail API通過使用授權者類(Authenticator)以用戶名、密碼的方式訪問那些受到保護的資源,在這里“資源”就是指郵件服務器。在javax.mail包中可以找到這個JavaMail的授權者類(Authenticator)。
在使用Authenticator這個抽象類時,我們必須采用繼承該抽象類的方式,并且該繼承類必須具有返回PassWordAuthentication對象(用于存儲認證時要用到的用戶名、密碼)getPasswordAuthentication()方法。并且要在Session中進行注冊,使Session能夠了解在認證時該使用哪個類。
下面代碼片斷中的MyAuthenticator就是一個Authenticator的子類。
Properties props = new Properties();
Authenticator auth = new MyAuthenticator();
Session session = Session.getDefaultInstance(props, auth);
5.Transport類
消息發送的最后一部分是 使用 Transport 類。
在發送信息時,Transport類將被用到。這個類實現了發送信息的協議(通稱為SMTP),此類是一個抽象類,我們可以使用這個類的靜態方法send()來發送消息:
Transport.send(message);
當然,方法是多樣的。我們也可由Session獲得相應協議對應的Transport實例。并通過傳遞用戶名、密碼、郵件服務器主機名等參數建立與郵件服務器的連接,并使用sendMessage()方法將信息發送,最后關閉連接:
message.saveChanges(); // implicit with send()
Transport transport = session.getTransport("smtp");
transport.connect(host, username, password);
transport.sendMessage(message, message.getAllRecipients());
transport.close();

評論:上面的方法是一個很好的方法,尤其是在我們在同一個郵件服務器上發送多個郵件時。因為這時我們將在連接郵件服務器后連續發送郵件,然后再關閉掉連接。send()這個基本的方法是在每次調用時進行與郵件服務器的連接的,對于在同一個郵件服務器上發送多個郵件來講可謂低效的方式。
注意:如果需要在發送郵件過程中監控mail命令的話,可以在發送前設置debug標志:
session.setDebug(true)。

6.Store類和Folder類
Store類實現特定郵件協議上的讀、寫、監視、查找等操作。通過Javax.mail.Store類可以訪問Javax.mail.Folder類。
Folder類用于分級組織郵件,并提供照Javax.mail.Message格式訪問email的能力。
接收郵件和發送郵件很類似都要用到Session。但是在獲得Session后,我們需要從Session中獲取特定類型的Store,然后連接到Store,這里的Store代表了存儲郵件的郵件服務器。在連接Store的過程中,極有可能需要用到用戶名、密碼或者Authenticator。
Store store = session.getStore("pop3");
store.connect(host, username, password);
在連接到Store后,一個Folder對象即目錄對象將通過Store的getFolder()方法被返回,我們可從這個Folder中讀取郵件信息:
Folder folder = store.getFolder("INBOX");
folder.open(Folder.READ_ONLY);
Message message[] = folder.getMessages();
上面的例子首先從Store中獲得INBOX這個Folder(對于POP3協議只有一個名為INBOX的Folder有效),然后以只讀(Folder.READ_ONLY)的方式打開Folder,最后調用Folder的getMessages()方法得到目錄中所有Message的數組。
注意:對于POP3協議只有一個名為INBOX的Folder有效,而對于IMAP協議,我們可以訪問多個Folder(想想前面講的IMAP協議)。而且SUN在設計Folder的getMessages()方法時采取了很智能的方式:首先接收新郵件列表,然后再需要的時候(比如讀取郵件內容)才從郵件服務器讀取郵件內容。
在讀取郵件時,我們可以用Message類的getContent()方法接收郵件或是writeTo()方法將郵件保存,getContent()方法只接收郵件內容(不包含郵件頭),而writeTo()方法將包括郵件頭。
System.out.println(((MimeMessage)message).getContent());
在讀取郵件內容后,別忘記了關閉Folder和Store。
folder.close(aBoolean);store.close();
傳遞給Folder.close()方法的boolean 類型參數表示是否在刪除操作郵件后更新Folder。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 垣曲县| 哈密市| 泾源县| 大理市| 永胜县| 集安市| 缙云县| 乳源| 漳州市| 会宁县| 阿坝| 哈尔滨市| 繁昌县| 高邮市| 开化县| 西峡县| 华坪县| 中西区| 六枝特区| 扶风县| 清水河县| 临洮县| 扶绥县| 阿城市| 宁河县| 夹江县| 乌拉特后旗| 尚义县| 溆浦县| 东乡族自治县| 太和县| 安国市| 琼海市| 日土县| 绍兴市| 阳新县| 平湖市| 甘孜县| 梁山县| 平定县| 凉城县|