2017-08-15 5 views
1

La partie de la fonction InternetAddress.parse(String addressList, boolean strict) du java-gmail-imap est utilisé pour analyser les listes de courriel séparées par , de la forme [email protected] et Personal Name <[email protected]> qui sont conformes à la norme RFC822.InternetAddress Parse défaut sur en-têtes Mime en raison de certains e-mails

Ceci est généralement utilisé pour analyser les en-têtes mime d'un email (Ceci est présent dans le MessagePartHeader dans l'objet Message retourné par l'API gmail).

Question: La méthode parse jette un AddressException lorsqu'il rencontre une adresse e-mail ne peut pas analyser. Le problème avec ceci est qu'il est incapable d'analyser toute la liste d'adresses à cause d'une adresse email potentiellement défectueuse/mal formée/non-ascii. Existe-t-il un bon moyen de scinder les en-têtes mime (tels que to, bcc, cc) en adresses e-mail individuelles et de les analyser individuellement? (Ce n'est pas aussi simple qu'une scission sur , parce que les noms peuvent potentiellement contenir ,). De cette façon, je peux localiser la mauvaise adresse e-mail.

De plus, y a-t-il de meilleurs analyseurs java mime capables d'analyser les emails contenant des caractères non-ascii dans les adresses email (RFC6530, RFC6531 et RFC6532)? De cette façon, je peux avoir une meilleure chance d'analyser cette adresse email défectueuse localisée qui n'est pas conforme à la RFC822.

+0

Êtes-vous d'appeler la méthode InternetAddress.parse explicitement? Ou êtes-vous dépendant de l'analyse implicite effectuée par la classe MimeMessage? Si ce dernier, définissez le ['mail.mime.address.strict'] (https://javaee.github.io/javamail/docs/api/javax/mail/internet/package-summary.html#mail.mime. address.strict) La propriété de session est 'false', ce qui devrait garantir que vous n'obtiendrez jamais une exception AddressException. –

+0

J'appelle explicitement la méthode 'InternetAddress.parse'. Que dois-je faire pour le scénario précédent? – iart

+0

Appelez la méthode [parseHeader] (https://javaee.github.io/javamail/docs/api/javax/mail/internet/InternetAddress.html#parseHeader-java.lang.String-boolean-). –

Répondre

2

La dernière version de JavaMail 1.6.0 a introduit une nouvelle propriété de session, qui permet les adresses de messagerie UTF-8. Réglez simplement mail.mime.allowutf8 sur true dans les propriétés de votre session.

Properties props = new Properties(); 
props.put("mail.mime.allowutf8", true); 
Session.getInstance(props) 

voir le changelog