2012-12-12 19 views
1

我正在處理一組專門的電子郵件服務器,這些電子郵件服務器被配置爲在成功接收郵件時返回郵件處置通知(MDN)。我開發了一個Javamail客戶端,用於將消息發送到這些服務器之一,並從用戶的POP3 INBOX文件夾中檢索返回的MDN。對Javamail使用DispositionNotification

如何從我從用戶的收件箱中檢索到的返回的MimeMessage獲取處理通知正文部分?我發現com.sun.mail.dsn.DispositionNotification類,但還沒有看到如何使用構造正確地創建一個DispositionNotification的一個實例的例子:

DispositionNotification(InputStream) 

我應該能夠得到的InputStream從一個MimeMessage並使用它來創建DispositionNotification,像這樣?

Message[] msgs = getInboxMessages();  
DispositionNotification dn = new DispositionNotification(msgs[0].getInputStream(); 

或者是否有其他方式應該這樣做?

回答

0

此類消息的getContent方法應該返回一個MultipartReport對象(通常的MimeMultipart對象的特殊子類),您可以從中訪問報表的各個部分。 MultipartReport.getReport()方法將根據報告的類型返回DeliveryStatus或DispositionNotification對象。

+0

@Bill_Shannon這對我指出正確的方向非常有幫助。謝謝! – user1899331

+0

MultipartReport report =(MultipartReport)msgs [i] .getContent();如果(msgs [i] .getContentType()。contains(「disposition-notification」)){ DispositionNotification dn =(DispositionNotification)report.getReport(); InternetHeaders inetHeaders = dn.getNotifications();枚舉頭= inetHeaders.getAllHeaders(); String msgId = inetHeaders.getHeader(「Original-Message-ID」,「;」); String disp = inetHeaders.getHeader(「Disposition」,「;」); } – user1899331