2017-02-13 2 views
0

InputWir Null erhalten, sobald die innear Betreff einer Nachricht/rfc822 Befestigung Zugriff

https://i.stack.imgur.com/MnfDs.png

In der obigen Abbildung wir die Eingabedatei erwähnen, die Eingabe in Form von EML geben.

MimeMessageParser mmparser = new MimeMessageParser(message);   
mmparser.parse();  
System.out.println("Subject1: " + mmparser.getSubject());  
List<DataSource> attachmentList = mmparser.getAttachmentList();  
System.out.println("Number of attachment " + attachmentList.size());  
DataSource ds1 = mmparser.getAttachmentList().get(0);   
System.out.println("Content Type:" + ds1.getContentType());  
final Session mail_session = Session.getDefaultInstance(new java.util.Properties());       
final MimeMessage mimeMsgAtt = new MimeMessage(mail_session, ds1.getInputStream()); 
MimeMessageParser mmparserAttachment = new MimeMessageParser(mimeMsgAtt);  
MimeMessageParser mmparser1 = new MimeMessageParser(mmparserAttachment.getMimeMessage());        
mmparser1.parse();         
System.out.println("Subject2: " + mmparser1.getSubject());  
List<DataSource> attachNum = mmparser1.getAttachmentList();  
System.out.println("Number of attachment:" +attachNum.size());  
DataSource dsX2 = mmparser1.getAttachmentList().get(0);  
final MimeMessage mimeMsgAttX1 = new MimeMessage(mail_session, dsX2.getInputStream());   
MimeMessageParser mmparserAttachmentX2 = new MimeMessageParser(mimeMsgAttX1);  
MimeMessageParser mmparser2 = new MimeMessageParser(mmparserAttachmentX2.getMimeMessage());         
mmparser2.parse();  
// THE PROBLEM, subject is null  
System.out.println("Subject3: " + mmparser2.getSubject());  


> output 

:Subject1: Undeliverable: GEET - Downtime Notification for E411 
Number of attachment 1  
Content Type: message/rfc822  
Subject2: Undeliverable: GEET - Downtime Notification for E411  
Number of attachment: 2  
Subject3: null  

Hier können wir nicht das dritte Thema zugreifen, die GEET ist - Stillstands- Benachrichtigung für E411. Ich bin nicht in der Lage zu finden, wo ich Fehler mache, also bitte hilf mir.

Antwort

1

Basierend auf den Daten, die Sie zu diesem unrelated JavaMail bug report hinzugefügt haben, besteht das Problem möglicherweise darin, dass die Nachricht falsch formatiert ist. Die beigefügte Nachricht hat diesen Header:

Content-Type: text/html; charset="'us-ascii'" 

Der charset Wert wird zweimal zitiert, die einen Fehler verursacht, wenn für den charset Wandler suchen, den Inhalt zu entschlüsseln. Sie können möglicherweise die technique described in the JavaMail FAQ to handle this bogus charset value verwenden.

Ich weiß nichts über MimeMessageParser, sondern auch über Java Mail das charset Problem zu ignorieren ist in der Lage, die Nachricht korrekt mit der MimeMessage Klasse und das msgshow.java Beispielprogramm zu analysieren:

$ java msgshow -m -s < DemoEmail.eml 
This is the message envelope 
--------------------------- 
FROM: Microsoft Outlook <[email protected]> 
REPLY TO: Microsoft Outlook <[email protected]> 
TO: [email protected] 
SUBJECT: Undeliverable: GEET - Downtime Notification for E411 
SendDate: Mon Jan 23 06:34:12 PST 2017 
FLAGS: 
X-Mailer NOT available 
CONTENT-TYPE: multipart/mixed; 
     boundary=_f21b488c-e1c0-4de8-9c64-2579a8c7a35d_ 
This is a Multipart 
--------------------------- 
    CONTENT-TYPE: text/plain; charset=us-ascii 
    This is plain text 
    --------------------------- 
    CONTENT-TYPE: message/rfc822 
    This is a Nested Message 
    --------------------------- 
    This is the message envelope 
    --------------------------- 
    FROM: Microsoft Outlook <[email protected]> 
    REPLY TO: Microsoft Outlook <[email protected]> 
    TO: [email protected] 
    SUBJECT: Undeliverable: GEET - Downtime Notification for E411 
    SendDate: Mon Jan 23 06:34:12 PST 2017 
    FLAGS: 
    X-Mailer NOT available 
    CONTENT-TYPE: multipart/report; report-type=delivery-status; 
     boundary=_647f43cc-ceff-4427-bc28-e7366392af1f_ 
    This is a Multipart 
    --------------------------- 
     CONTENT-TYPE: multipart/alternative; differences=Content-Type; 
     boundary=_0208790d-52b7-4d11-b3c4-37e958eea557_ 
     This is a Multipart 
     --------------------------- 
     CONTENT-TYPE: text/plain; charset=us-ascii 
     This is plain text 
     --------------------------- 
     CONTENT-TYPE: text/html; charset=us-ascii 
     --------------------------- 
     CONTENT-TYPE: message/delivery-status 
     --------------------------- 
     CONTENT-TYPE: message/rfc822 
     This is a Nested Message 
     --------------------------- 
     This is the message envelope 
     --------------------------- 
     FROM: [email protected] 
     REPLY TO: [email protected] 
     TO: [email protected] 
     SUBJECT: GEET - Downtime Notification for E411 
     SendDate: Mon Jan 23 06:33:42 PST 2017 
     FLAGS: 
     X-Mailer NOT available 
     CONTENT-TYPE: text/html; charset='us-ascii' 
     --------------------------- 
+0

Herr, erhalte ich die dritten Betreff von msgshow.java. Aber ich habe nicht auf MimeMessageParser zugegriffen. Ich ändere auch die "INHALT-TYPE: text/plain; charset = us-ascii" in der eml-Datei. Ich möchte Ergebnis durch MimeMessageParser. – Ashish

+0

Entschuldigung, ich kann dir nicht helfen. Es ist nicht Teil von JavaMail und ich weiß nichts darüber. –

Verwandte Themen