2017-01-19 6 views
1

Mon application envoie un e-mail à un serveur de messagerie Exchange, serveur de messagerie est configuré avec une application tierce où il achemine email à l'agent et l'agent répond à cet e-mail. L'application lit la réponse de l'agent depuis la boîte aux lettres utilisée pour envoyer l'e-mail.nombre MimeMultipart est égal à zéro lorsqu'un e-mail est lu en utilisant JavaMail

Le code d'envoi de courrier électronique est ci-dessous;

Message mimeMessage = new MimeMessage(session); 
       mimeMessage.setFrom(new InternetAddress(from)); 
       mimeMessage.addRecipient(Message.RecipientType.TO, new InternetAddress(to)); 
       mimeMessage.setSubject(subject); 
       mimeMessage.setContent(emailText,"text/plain"); 

       mimeMessage.setReplyTo(replyToAddress); 

       Transport.send(mimeMessage); 

Cela fonctionne parfaitement. Lorsque la réponse de l'agent est reçue, Application la lit comme; Le type de contenu est "multipart/mixed" mais le nombre est 0 signifie qu'il n'y a pas de parties dans cet e-mail.

Je dois définir la propriété système,

System.setProperty("mail.mime.multipart.allowempty", "true"); 

si elle n'est pas réglé, multipart.getCount() lancers francs "missingBoundryException".

Pourquoi c'est ainsi? Je peux voir que la réponse de l'agent n'est pas vide. L'e-mail a été envoyé avec le type de contenu comme texte/plaine, pourquoi le type de réponse est multipart/mixed?

Est-ce dû à un formatage non valide de courrier électronique par application tierce, quelle est la solution?

est inférieure à la pression de réponse de l'agent. Agent reply

Ci-dessous le contenu MIME brut,

Received: from sociaminer.host (192.168.1.29) by thirdpartHost 
(192.168.1.53) with Microsoft SMTP Server (TLS) id 14.1.218.12; Thu, 19 Jan 
2017 17:06:26 +0500 
To: hafiz <[email protected]> 
Message-ID: <[email protected]> 
In-Reply-To: <[email protected]> 
References: <[email protected]> 
Subject: Re: 1122+50 
Content-Type: multipart/mixed; 
    boundary="----=_Part_127_14151461.1484827604583" 
From: <[email protected]> 
Return-Path: [email protected] 
Date: Thu, 19 Jan 2017 17:06:26 +0500 
X-MS-Exchange-Organization-AuthSource: bla.bla 
X-MS-Exchange-Organization-AuthAs: Internal 
X-MS-Exchange-Organization-AuthMechanism: 06 
X-Originating-IP: [SocialMinerIP] 
MIME-Version: 1.0 

------=_Part_127_14151461.1484827604583 
Content-Type: text/html; charset="utf-8" 
Content-Transfer-Encoding: 7bit 

<meta http-equiv="Content-Type" content="text/html; charset=utf-8">Reply to 50<br> 

<blockquote><hr> 
<b>From:</b> hafiz &lt;[email protected]&gt;<br><b>Sent:</b> Thursday, January 19, 2017 5:05 PM<br><b>To:</b> testing2 &lt;[email protected]&gt;<br><b>Subject:</b> 1122&#43;50<br> 

<html dir="ltr"> 
<head> 

<style type="text/css" id="owaParaStyle"></style> 
</head> 
<body fpstyle="1" ocsi="0"> 
<div style="direction: ltr;font-family: Tahoma;color: #000000;font-size: 10pt;">Testing 50</div> 
</body> 
</html> 
</blockquote> 
------=_Part_127_14151461.1484827604583-- 

sortie de débogage JavaMail ressemble ci-dessous,

DEBUG: setDebug: JavaMail version 1.4.7 
DEBUG: getProvider() returning javax.mail.Provider[STORE,imap,com.sun.mail.imap.IMAPStore,Oracle] 
DEBUG IMAP: mail.imap.fetchsize: 16384 
DEBUG IMAP: mail.imap.ignorebodystructuresize: false 
DEBUG IMAP: mail.imap.statuscachetimeout: 1000 
DEBUG IMAP: mail.imap.appendbuffersize: -1 
DEBUG IMAP: mail.imap.minidletime: 10 
DEBUG IMAP: disable AUTH=PLAIN 
DEBUG IMAP: enable STARTTLS 
DEBUG IMAP: trying to connect to host "Echange IP", port 143, isSSL false 
* OK The Microsoft Exchange IMAP4 service is ready. 
A0 CAPABILITY 
* CAPABILITY IMAP4 IMAP4rev1 LOGINDISABLED STARTTLS UIDPLUS CHILDREN IDLE NAMESPACE LITERAL+ 
A0 OK CAPABILITY completed. 
DEBUG IMAP: protocolConnect login, host=192.168.1.53, [email protected], password=<non-null> 
A1 STARTTLS 
A1 OK Begin TLS negotiation now. 
A2 CAPABILITY 
* CAPABILITY IMAP4 IMAP4rev1 AUTH=NTLM AUTH=GSSAPI AUTH=PLAIN UIDPLUS CHILDREN IDLE NAMESPACE LITERAL+ 
A2 OK CAPABILITY completed. 
DEBUG IMAP: AUTH: NTLM 
DEBUG IMAP: AUTH: GSSAPI 
DEBUG IMAP: AUTH: PLAIN 
DEBUG IMAP: AUTHENTICATE NTLM command trace suppressed 
DEBUG NTLM: type 1 message: 4E 54 4C 4D 53 53 50 00 01 00 00 00 03 A2 00 00 00 00 00 00 23 00 00 00 03 00 03 00 20 00 00 00 31 39 32 
DEBUG NTLM: type 3 message: 4E 54 4C 4D 53 53 50 00 03 00 00 00 18 00 18 00 68 00 00 00 18 00 18 00 80 00 00 00 00 00 00 00 40 00 00 00 22 00 22 00 40 00 00 00 06 00 06 00 62 00 00 00 00 00 00 00 98 00 00 00 01 82 00 00 68 00 61 00 66 00 69 00 7A 00 40 00 65 00 66 00 6C 00 61 00 62 00 2E 00 6C 00 6F 00 63 00 61 00 6C 00 31 00 39 00 32 00 3B 5E 2B 86 67 49 E3 01 C9 9E F2 CA ED 54 21 11 81 89 94 C6 EC E0 26 E3 BA DB E7 5A F4 CA 28 17 7C 0E 8A 08 18 B5 5A 4E 72 4F C5 7F 52 64 FA 76 
DEBUG IMAP: AUTHENTICATE NTLM command result: A3 OK AUTHENTICATE completed. 
A4 CAPABILITY 
* CAPABILITY IMAP4 IMAP4rev1 AUTH=NTLM AUTH=GSSAPI AUTH=PLAIN UIDPLUS CHILDREN IDLE NAMESPACE LITERAL+ 
A4 OK CAPABILITY completed. 
DEBUG IMAP: AUTH: NTLM 
DEBUG IMAP: AUTH: GSSAPI 
DEBUG IMAP: AUTH: PLAIN 
DEBUG IMAP: connection available -- size: 1 
A5 SELECT INBOX 
* 40 EXISTS 
* 0 RECENT 
* FLAGS (\Seen \Answered \Flagged \Deleted \Draft $MDNSent) 
* OK [PERMANENTFLAGS (\Seen \Answered \Flagged \Deleted \Draft $MDNSent)] Permanent flags 
* OK [UNSEEN 39] Is the first unseen message 
* OK [UIDVALIDITY 436] UIDVALIDITY value 
* OK [UIDNEXT 46] The next unique identifier value 
A5 OK [READ-WRITE] SELECT completed. 
A6 SEARCH UNSEEN ALL 
* SEARCH 39 
A6 OK SEARCH completed. 
A7 SEARCH UNSEEN ALL 
* SEARCH 39 
A7 OK SEARCH completed. 
main INFO emailToSms.EmailReader - 1 unread emails read from inbox. 
A8 STORE 39 +FLAGS (\Seen) 
* 39 FETCH (FLAGS (\Seen)) 
A8 OK STORE completed. 
A9 FETCH 39 (BODY.PEEK[HEADER]) 
* 39 FETCH (BODY[HEADER] {851} 
MIME-Version: 1.0 
Received: from HOST (IP) by HOST 
(192.168.1.53) with Microsoft SMTP Server (TLS) id 14.1.218.12; Thu, 19 Jan 
2017 17:06:26 +0500 
To: hafiz <[email protected]> 
Message-ID: <hassan.B69E3DD110000159000004A73F[email protected]> 
In-Reply-To: <[email protected]> 
References: <[email protected]> 
Subject: Re: 1122+50 
Content-Type: multipart/mixed; 
    boundary="----=_Part_127_14151461.1484827604583" 
From: <[email protected]> 
Return-Path: [email protected] 
Date: Thu, 19 Jan 2017 17:06:26 +0500 
X-MS-Exchange-Organization-AuthSource: Expert.bla.bla 
X-MS-Exchange-Organization-AuthAs: Internal 
X-MS-Exchange-Organization-AuthMechanism: 06 
X-Originating-IP: [IP] 

) 
A9 OK FETCH completed. 
A10 FETCH 39 (ENVELOPE INTERNALDATE RFC822.SIZE) 
* 39 FETCH (ENVELOPE ("Thu, 19 Jan 2017 17:06:26 +0500" "Re: 1122+50" ((NIL NIL "testing2" "bla.bla")) NIL NIL (("hafiz" NIL "hafiz" "bla.bla")) NIL NIL "<[email protected]>" "<[email protected]bla.bla>") INTERNALDATE "19-Jan-2017 17:06:26 +0500" RFC822.SIZE 1250) 
A10 OK FETCH completed. 
A11 FETCH 39 (BODYSTRUCTURE) 
* 39 FETCH (BODYSTRUCTURE ("multipart" "mixed" ("boundary" "----=_Part_127_14151461.1484827604583") NIL NIL 7BIT 0 NIL NIL NIL NIL)) 
A11 OK FETCH completed. 

DEBUG IMAP: IMAPProtocol noop 
A12 NOOP 
A12 OK NOOP completed. 
+0

Affichez le contenu MIME brut de la réponse pour pouvoir voir ce qui ne va pas. Vous pouvez l'obtenir en utilisant message.writeTo (new FileOutputStream ("msg.txt")); puis regardez le fichier msg.txt.file. –

+0

@BillShannon contenu MIME brut ajouté. – sikander

+0

Je ne vois rien de manifestement faux. Utilisez-vous IMAP? Que montre la sortie de [debug JavaMail] (http://www.oracle.com/technetwork/java/javamail/faq/index.html#debug)? –

Répondre

2

Ce bogue dans Microsoft Exchange. Signalez ce bogue à Microsoft et effectuez une mise à niveau vers une version plus récente ou un service pack plus récent si possible, au cas où ils l'auraient déjà résolu.

Exchange retourne les informations BODYSTRUCTURE pour le message comme si elle était un seul message partiel, alors qu'en fait il est un message multipart. Ceci est une violation de la spécification du protocole IMAP.

Vous pouvez utiliser le workaround in the JavaMail FAQ.

, vous pouvez également upgrade to a newer version of JavaMail - 1.4.7 est assez ancienne, la version actuelle est 1.5.6.

+0

Même problème avec JavaMail 1.5.6. Mise à niveau Exchange a fonctionné. Merci. – sikander