JavaMail入門第四篇 內送郵件,javamail第四篇
上一篇JavaMail入門第三篇 發送郵件中,我們學會了如何用JavaMail API提供的Transport類發送郵件,同樣,JavaMail API中也提供了一些專門的類來對郵件的接收進行相關的操作,再介紹這些類之前,我們先來瞭解下郵件接收API的體繫結構,JavaMail API中定義了一個java.mail.Store類,它用於執行郵件的接收任務,我們在程式中調用這個類中的方法可以擷取郵箱中的各個郵件夾的資訊。JavaMail使用Folder對象表示郵件夾,通過Folder對象的方法可以擷取郵件夾中的所有郵件資訊,而我們知道郵件的資訊可以使用Message對象來表示,Message類中就包含了操作郵件的各種方法了,例如擷取郵件的寄件者,主題,本文內容,發送時間等,它們工作關係如下:
1、從Session對象中獲得實現了某種郵件發送協議的Store對象;
2、登入郵箱,串連上POP3或者IMAP4伺服器;
3、調用Store的getFolder方法,擷取郵箱中的某個郵件夾的Folder對象;
4、調用Folder對象中的getMessage或getMessages方法,擷取郵件夾中的某一封郵件或者是所有郵件,每一封的郵件以一個Message對象返回。
接下來我們用以上類來內送郵件
1 import java.util.Properties; 2 3 import javax.mail.Address; 4 import javax.mail.Folder; 5 import javax.mail.Message; 6 import javax.mail.Session; 7 import javax.mail.Store; 8 9 class MailReceives {10 public static void main(String[] args) throws Exception {11 // 定義串連POP3伺服器的屬性資訊12 String pop3Server = "pop.qq.com";13 String protocol = "pop3";14 String username = "552482793@qq.com";15 String password = "gvbrkikfckxgbeac";16 17 Properties props = new Properties();18 props.setProperty("mail.transport.protocol", protocol); // 使用的協議(JavaMail規範要求)19 props.setProperty("mail.smtp.host", pop3Server); // 寄件者的郵箱的 SMTP伺服器位址20 21 // 擷取串連22 Session session = Session.getDefaultInstance(props);23 session.setDebug(false);24 25 // 擷取Store對象26 Store store = session.getStore(protocol);27 store.connect(pop3Server, username, password); // POP3伺服器的登陸認證28 29 // 通過POP3協議獲得Store對象調用這個方法時,郵件夾名稱只能指定為"INBOX"30 Folder folder = store.getFolder("INBOX");// 獲得使用者的郵件帳戶31 folder.open(Folder.READ_WRITE); // 設定對郵件帳戶的存取權限32 33 Message[] messages = folder.getMessages();// 得到郵箱帳戶中的所有郵件34 35 for (Message message : messages) {36 String subject = message.getSubject();// 獲得郵件主題37 Address from = (Address) message.getFrom()[0];// 獲得寄件者地址38 System.out.println("郵件的主題為: " + subject + "\t寄件者地址為: " + from);39 System.out.println("郵件內容為:" + message.getContent());40 }41 42 folder.close(false);// 關閉郵件夾對象43 store.close(); // 關閉連線物件44 }45 }
Message中的getContent方法用於返回郵件體的內容,該方法把郵件體內容作為一個Java對象返回,對象的類型由郵件體內容確定,當郵件內容的MIME類型為"text/plain"時,返回的是一個String對象,郵件內容是一個"multipart"類型時,返回的是一個Multipart的一個實作類別,郵件內容的MIME類型不確定時,返回的是與內容相關聯的InputStream流。