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

利用 JavaMail 收取 Hotmail 退信:multipart/report 處理實作

     編輯:Java 程式設計入門

背景

Hotmail 實作郵件傳送狀態通知(multipart/report),常見郵件客戶端僅支援 multipart/mixed、alternative、related,忽略報告類型導致無法正確處理退信。

RFC 1892 與 JavaMail FAQ

標準定義 multipart/report MIME 類型回報傳送錯誤,但廣泛實作度低。最終伺服器檢測錯誤後回報寄件者,中繼伺服器不檢測。關聯原始郵件與退信困難,業界常用 VERP(Variable Envelope Return Paths)等技巧輔助。

程式碼實作:解析 multipart/report

private void parseMultipart(Multipart multipart) throws Exception {
    for (int i = 0, n = multipart.getCount(); i < n; i++) {
        BodyPart part = multipart.getBodyPart(i);
        String disposition = part.getDisposition();

        if (part.isMimeType("multipart/*")) {
            parseMultipart((Multipart) part.getContent()); // 遞迴解析
        } else if (part.isMimeType("text/html")) {
            // 處理 HTML 內容
        }
        // 處理附件、圖片等...
        else if (part.isMimeType("message/delivery-status")) {
            part.setFileName("details.txt"); // 模仿 Outlook 命名
            saveAttachedFile(part);          // 儲存傳送狀態通知頭部資訊
        } else if (part.isMimeType("message/rfc822")) {
            // 處理封裝的原始郵件
        }
    }
}

關鍵點:遞迴處理巢狀 multipart,識別 message/delivery-status 並儲存為 details.txt,message/rfc822 為原始郵件內容,可進一步解析關聯。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved