2017-02-13 2 views
0
Dans la figure ci-dessus, nous mentionnons le fichier d'entrée

InputWe Get Null lors de l'accès au sujet de innear d'un message/pièce jointe rfc822

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

, qui donnent entrée sous la forme d'EML.

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  

nous ne pouvons pas accéder ici au troisième sujet qui est GEET - Avis pour E411 Downtime. Je ne suis pas en mesure de trouver où je me trompe alors s'il vous plaît aidez-moi.

Répondre

1

D'après les données que vous avez ajoutées à ce unrelated JavaMail bug report, le problème est peut-être que le message est mal formaté. Le message ci-joint a cet en-tête:

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

La valeur charset est deux fois cité, ce qui provoque un échec lors de la recherche du convertisseur charset pour décoder le contenu. Vous pourriez être en mesure d'utiliser le technique described in the JavaMail FAQ to handle this bogus charset value.

Je ne sais pas quoi que ce soit au sujet MimeMessageParser, mais même en ignorant le problème de charset ci-dessus JavaMail est capable d'analyser le message en utilisant correctement la classe MimeMessage et le programme d'échantillonnage msgshow.java:

$ 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

Monsieur, je reçois le troisième sujet de msgshow.java. Mais je n'ai pas accédé par MimeMessageParser. Je change également le "CONTENT-TYPE: text/plain; charset = us-ascii" dans le fichier eml. Je veux un résultat grâce à MimeMessageParser. – Ashish

+0

Désolé, je ne peux pas vous aider. Cela ne fait pas partie de JavaMail et je n'en sais rien. –