首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> Java 相關知識

JavaMail 實戰:基於 POP3 協議接收郵件完整指南

     編輯:Java 相關知識

JavaMail API 是 Java 平台處理電子郵件的標準擴展套件。本例示範如何使用 POP3 協議連線郵件伺服器、認證登入、讀取收件箱郵件列表、解析並顯示郵件主旨、寄件者、正文內容(支援純文字與 HTML),同時說明附件處理的切入點。

核心流程四步走

  1. 建立 Session:Session.getDefaultInstance(props, null) 取得郵件會話,屬性可配置超時、SSL 等。
  2. 連線 Store:session.getStore("pop3") 取得 POP3 存儲對象,store.connect(host, user, pass) 認證連線。
  3. 開啟 Folder:store.getDefaultFolder().getFolder("INBOX").open(Folder.READ_ONLY) 以唯讀模式開啟收件箱。
  4. 遍歷 Message: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);
    }
}

關鍵技術點解析

  • MimeMessage 結構:郵件可能是簡單的單一 Part,也可能是 Multipart(混合/替代/相關/並列)。multipart/alternative 通常包含 text/plain 與 text/html 兩個版本;multipart/mixed 則包含附件。
  • 編碼處理:主旨、寄件者名稱常採用 MIME 編碼(=?UTF-8?B?...?=),JavaMail MimeUtility.decodeText() 可自動解碼,本例未演示但實戰必用。
  • 附件提取:遍歷 Multipart 各 BodyPart,判斷 Part.ATTACHMENT disposition 或檔名存在性,透過 getDataHandler().getInputStream() 讀取二進位資料寫入檔案。
  • 資源釋放:finally 區塊務必 folder.close(false)(true 會刪除標記為刪除的郵件)與 store.close(),否則伺服器端連線可能殘留。

擴展方向

  • IMAP 協議:支援伺服器端搜尋、標旗同步、資料夾管理,適合郵件用戶端開發。
  • SSL/TLS 安全連線:設定 mail.pop3.ssl.enable=true 或使用 pop3s 協議名,連接埠 995。
  • 非同步新郵件通知:使用 Folder.addMessageCountListener() 或 IDLE 指令 (IMAP) 實現即時推播。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved