JavaMail API 是 Java 平台處理電子郵件的標準擴展套件。本例示範如何使用 POP3 協議連線郵件伺服器、認證登入、讀取收件箱郵件列表、解析並顯示郵件主旨、寄件者、正文內容(支援純文字與 HTML),同時說明附件處理的切入點。
Session.getDefaultInstance(props, null) 取得郵件會話,屬性可配置超時、SSL 等。session.getStore("pop3") 取得 POP3 存儲對象,store.connect(host, user, pass) 認證連線。store.getDefaultFolder().getFolder("INBOX").open(Folder.READ_ONLY) 以唯讀模式開啟收件箱。folder.getMessages() 取得郵件陣列,逐一解析列印。public static void printMessage(Message message) {
// 1. 寄件者
String from = ((InternetAddress)message.getFrom()[0]).getPersonal();
if (from == null) from = ((InternetAddress)message.getFrom()[0]).getAddress();
// 2. 主旨
String subject = message.getSubject();
// 3. 內容處理 - 處理 Multipart (含附件/替代格式)
Part messagePart = message;
Object content = messagePart.getContent();
if (content instanceof Multipart) {
messagePart = ((Multipart)content).getBodyPart(0); // 簡化:取第一部分
System.out.println("[ Multipart Message ]");
}
// 4. 文字內容輸出
String contentType = messagePart.getContentType();
if (contentType.startsWith("text/plain") || contentType.startsWith("text/html")) {
BufferedReader reader = new BufferedReader(new InputStreamReader(messagePart.getInputStream()));
String line;
while ((line = reader.readLine()) != null) System.out.println(line);
}
}
Multipart(混合/替代/相關/並列)。multipart/alternative 通常包含 text/plain 與 text/html 兩個版本;multipart/mixed 則包含附件。=?UTF-8?B?...?=),JavaMail MimeUtility.decodeText() 可自動解碼,本例未演示但實戰必用。Multipart 各 BodyPart,判斷 Part.ATTACHMENT disposition 或檔名存在性,透過 getDataHandler().getInputStream() 讀取二進位資料寫入檔案。finally 區塊務必 folder.close(false)(true 會刪除標記為刪除的郵件)與 store.close(),否則伺服器端連線可能殘留。mail.pop3.ssl.enable=true 或使用 pop3s 協議名,連接埠 995。Folder.addMessageCountListener() 或 IDLE 指令 (IMAP) 實現即時推播。