javamail使用IMAP協議收取gmail郵件
阿新 • • 發佈:2019-02-15
年底了,績效是逃不開的話題,為總結這一年來的工作情況,檢視郵件是非常必要的。但是,郵件太多,如何篩選和保留成為一個問題,因此想到實現個自動統計郵件內容的工具,今天分享使用IMAP協議收取gmail郵件的實現方式。
準備環境
新建一個java專案,並從oracle官網下載javamail.jar檔案,匯入到專案中。
定義SMTP連線詳情
首先,我們需要定義連線伺服器相關的配置詳情,如埠/主機名等。
在專案根目錄下建立smtp.properties檔案,並輸入以下內容。
mail.smtp.host=smtp.gmail.com
mail.smtp.socketFactory .port=465
mail.smtp.socketFactory.class=javax.net.ssl.SSLSocketFactory
mail.smtp.auth=true
mail.smtp.port=465
載入配置資訊
定義配置資訊後,我們需要使用方法載入這些資訊,並建立一個郵件會話。
props.load(new FileInputStream(new File("smtp.properties")));
Session session = Session.getDefaultInstance(props, null);
連線
建立一個store(javax.mail.Store)連線郵件伺服器。
Store store = session.getStore("imaps");
store.connect("smtp.gmail.com", "*************@gmail.com","your_password");
讀取收件箱
定義讀取gmail收件箱目錄。
Folder inbox = store.getFolder("inbox");
inbox.open(Folder.READ_ONLY);
讀取郵件
獲取到收件箱目錄後,就可以很容易的獲取到郵件相關的內容了,下面是獲取郵件主題的方法。
Message[] messages = inbox.getMessages();
System.out.println("------------------------------" );
for (int i = 0; i < 10; i++) {
System.out.println("Mail Subject:- " + messages[i].getSubject());
}
完整原始碼
下面是完整的原始碼
public class SimpleStoreMails {
public static void main(String[] args) {
SimpleStoreMails mail = new SimpleStoreMails();
mail.read();
}
public void read() {
Properties props = new Properties();
try{
props.load(new FileInputStream(new File("smtp.properties")));
Session session = Session.getDefaultInstance(props, null);
Store store = session.getStore("imaps");
store.connect(POP3_SERVER, USER, PWD);
Folder inbox = store.getFolder("inbox");
inbox.open(Folder.READ_ONLY);
Message[] messages = inbox.getMessages();
for (int i = 0; i < inbox.getMessageCount(); i++){
Message message = messages[i];
Date date = message.getSentDate();
System.out.println("Mail Subject:- " + message.getSubject());
System.out.println("Mail Content Type:- " + message.getContentType());
System.out.println("Mail Sent Date:- " + date);
}
inbox.close(true);
store.close();
}catch (Exception e){
e.printStackTrace();
}
}
}