2013-08-07 45 views
0

我正在嘗試閱讀退回的電子郵件的狀態標頭。 This site更好地解釋什麼,我想......退回的郵件獲取狀態標頭

原來的電子郵件是由幾個的multipart對象組成的,所以我讀它在java代碼:

private void test(MimeMessage message) throws IOException, MessagingException { 
    if (message.getContent() != null && message.getContent() instanceof Multipart) { 
        Multipart content = (Multipart) message.getContent(); 
        for (int i = 0; i < content.getCount(); i++) { 
         BodyPart bodyPart = content.getBodyPart(i); 
         Enumeration headers = bodyPart.getAllHeaders(); 
         while(headers.hasMoreElements()){ 
          Header header = (Header) headers.nextElement(); 
          LOGGER.info("Header: " + header.getName() + " value: " + header.getValue()); 
         } 
        } 

       } 
} 

電子郵件部分,我分析:

Content-Description:發送報告Content-Type:text/plain; charset = utf-8 Content-Transfer-Encoding:7bit

Reporting-MTA:dns; someLink.com X-Postfix-Queue-ID:EC862F00D0 X-Postfix-Sender:rfc822; [email protected]抵達日期:2013年8月7日(星期三) 13:52:43 +0200(CEST)

最終收件人:rfc822; [email protected] 原始收件人:rfc822; [email protected]操作: 失敗狀態:5.1.1遠程MTA:dns; [somelink.com Diagnostic-Code:smtp; 550-5.1.1您嘗試使用 的電子郵件地址範圍不存在 。請嘗試550-5.1.1仔細檢查收件人的電子郵件地址 錯別字或550-5.1.1不必要的空格。

在我的日誌文件,我可以看到只有3個標題:

> Header: Content-Description value: Delivery report 
> Header: Content-Type value: text/plain; charset=us-ascii INFO 
> Header: Content-Transfer-Encoding value: 7bit 

有誰知道爲什麼嗎?我怎麼能得到狀態頭?謝謝

回答

0

我無法在標題中找到狀態信息,我會從內容中找到它。這不是一個優雅的解決方案,但至少它是有效的。 如果有人發現更好的,請讓我知道!

Java代碼:

StringWriter writer = new StringWriter(); 
       IOUtils.copy(bodyPart.getInputStream(), writer); 
       LOGGER.info("Content inputstream: " + writer.toString()); 

日誌:

內容的InputStream:報告 - MTA:DNS; srvvie-mx3.styria-multi-media.com X-Postfix-Queue-ID:2A1A8F00CF X-Postfix-Sender:rfc822; 抵達日期:2013年8月9日(星期五) 11:14:02 +0200(CEST)

最終收件人:rfc822; [email protected] 原始收件人:rfc822; [email protected] 操作:失敗狀態:5.1.1遠程MTA:dns; 診斷代碼:smtp; 550 5.1.1郵箱 不存在