JavaMail API中也提供了一些專門的類來對郵件的接收進行相關的操做,在介紹這些類以前,咱們先來了解下郵件接收API的體系結構,JavaMai API中定義了一個java.mail.Store類,它用於執行郵件的接收任務,咱們在程序中調用這個類中的方法能夠獲取郵箱中的各個郵件夾的信息。JavaMail使用Folder對象表示郵件夾,經過Folder對象的方法能夠獲取郵件夾中的全部郵件信息,而咱們知道郵件的信息可使用Message對象來表示,Message類中就包含了操做郵件的各類方法了,例如獲取郵件的發送者,主題,正文內容,發送時間等,它們工做關係以下:java
一、從Session對象中得到實現了某種郵件發送協議的Store對象;
二、登陸郵箱,鏈接上POP3或者IMAP4服務器;
三、調用Store的getFolder方法,獲取郵箱中的某個郵件夾的Folder對象;
四、調用Folder對象中的getMessage或getMessages方法,獲取郵件夾中的某一封郵件或者是全部郵件,每一封的郵件以一個Message對象返回。服務器
import java.util.Properties; import javax.mail.Address; import javax.mail.Folder; import javax.mail.Message; import javax.mail.Session; import javax.mail.Store; class MailReceives { public static void main(String[] args) throws Exception { // 定義鏈接POP3服務器的屬性信息 String pop3Server = "pop.qq.com"; String protocol = "pop3"; String username = "123456@qq.com"; String password = "****************"; // QQ郵箱的SMTP的受權碼,什麼是受權碼,它又是如何設置? Properties props = new Properties(); props.setProperty("mail.transport.protocol", protocol); // 使用的協議(JavaMail規範要求) props.setProperty("mail.smtp.host", pop3Server); // 發件人的郵箱的 SMTP服務器地址 // 獲取鏈接 Session session = Session.getDefaultInstance(props); session.setDebug(false); // 獲取Store對象 Store store = session.getStore(protocol); store.connect(pop3Server, username, password); // POP3服務器的登錄認證 // 經過POP3協議得到Store對象調用這個方法時,郵件夾名稱只能指定爲"INBOX" Folder folder = store.getFolder("INBOX");// 得到用戶的郵件賬戶 folder.open(Folder.READ_WRITE); // 設置對郵件賬戶的訪問權限 Message[] messages = folder.getMessages();// 獲得郵箱賬戶中的全部郵件 for (Message message : messages) { String subject = message.getSubject();// 得到郵件主題 Address from = (Address) message.getFrom()[0];// 得到發送者地址 System.out.println("郵件的主題爲: " + subject + "\t發件人地址爲: " + from); System.out.println("郵件的內容爲:"); message.writeTo(System.out);// 輸出郵件內容到控制檯 } folder.close(false);// 關閉郵件夾對象 store.close(); // 關閉鏈接對象 } }
能夠看到控制檯輸出的是郵件的原始內容,還未被解析。session