Javamail problème avec - personnages dans les adresses de courrier électronique
Je vais avoir des problèmes avec la méthode d'analyse lorsque usising ñ
caractère:
essage.setRecipients(Message.RecipientType.TO, internetAddress.parse("somedir.withñchar@m ailserver.com",false));
Je suis de passage faux pour le strict paramètre, mais toujours j'obtiens l'erreur:
javax.mail.internet.AddressException: Local address contains control or whitespace in string ``somedir.with±har@mailserver.com''
at Mailer.main(Mailer.java:386)
Caused by: javax.mail.internet.AddressException: Local address contains control
or whitespace in string ``somedir.with±har@mailserver.com''
at javax.mail.internet.InternetAddress.checkAddress(InternetAddress.java
:1155)
at javax.mail.internet.InternetAddress.parse(InternetAddress.java:1044)
at javax.mail.internet.InternetAddress.parse(InternetAddress.java:575)
at Mailer.main(Mailer.java:377)
OriginalL'auteur Guille | 2011-01-05
Vous devez vous connecter pour publier un commentaire.
Si vous êtes toujours avec ce problème, je vous conseille de ajouter des guillemets à votre insolite e-mail comme je l'ai fait. Il a travaillé pour moi, parce que checkAddress méthode de InternetAddress donner à valider cité de l'adresse. C'est plus facile et rapide de la solution.
Exemple:
L'idéal et la bonne solution serait de Java Équipe pour résoudre InternetAddress de la classe de bug que même recevoir "strict=false" au constructeur est la vérification de l'e-mail de la syntaxe, quand il ne devrait pas.
Exemple du bug:
Exemple de la solution de rechange:
L'approche de la création d'une nouvelle classe qui étend la classe de l'Adresse ne fonctionne pas, puisque le Transport.send() pour quelque raison semble valider de nouveau l'adresse et l'exception est également lancé.
S'il vous plaît, laissez-nous savoir si ça a aidé!
OriginalL'auteur André
Vérifier que votre-est fait un n-tilde. Le suivant fonctionne parfaitement pour moi
Il fonctionne également lors du remplacement de l'-avec un échappement unicode (dans la source .fichier java)
Vous pourriez essayer de la remplacer comme cela juste comme un test.
Edit: BTW, j'avais aussi utilisé parse("...") avec l'adresse et pas de second paramètre, et passé
true
strict, qui a également travaillé.Ne fonctionne pas pour moi, soit à l'aide de Java Mail 1.4.7
Ce travail a été pour moi, depuis Java Mail 1.4.4 et travaille toujours. Avant downvoting moi, assurez-vous que vous avez réellement un U+00F1
ñ
Unicode "la LETTRE minuscule LATINE N AVEC un TILDE" et pas unn
U+006E "la LETTRE minuscule LATINE N" suivi d'un U+0303 "en COMBINANT TILDE"[...] les séquences de caractères DOIT être normalisé en fonction de la normalisation unicode. Mais ce n'est Devrait donc, c'est un peu attendu, les choses seront un peu de travail ici (et peut-être casser, mais sur le côté de réception).
OriginalL'auteur Stephen P
JavaMail adresse de l'analyseur est vous dire quelque chose de très important: Vous ne pouvez utiliser des caractères ASCII imprimables sur le côté gauche de la
@
signe dans une adresse e-mail. Découvrez RFC 5322 pour la ABNF adresses e-mail valides:Assurez-vous que l'adresse est correcte avant d'aller plus loin.
OriginalL'auteur dkarp
Peut-être que votre éditeur de texte n'est pas l'enregistrement de votre sourcefile comme UTF8 mais comme ASCII de sorte que votre nya est d'obtenir foiré. Assurez-vous de l'enregistrer au format UTF8. Il peut aussi être une option de compilation nécessaires pour compiler un .fichier java lorsque son enregistré comme UTF8. Je ne l'ai pas fait en temps mais j'en ai un souvenir de cette manière.
OriginalL'auteur jun
Pour envoyer des emails à des adresses non caractères imprimables ( - ), vous devez encoder l'adresse e-mail à l'aide de l'UTF-8.
Caractères accentués n'ont pas été autorisés par original RFC 5322 Format de Message Internet. Mais depuis, RFC 6532 Internationalisés (e-mails) offert un moyen d'utiliser des caractères internationaux dans les adresses email.
Vérifier cette question StackOverflow pour plus de détails.
OriginalL'auteur Nicolas Riousset
Créer une nouvelle classe, de l'étendre et de remplacer les valider functie. Cependant, je ne vois pas pourquoi vous voulez que.
OriginalL'auteur Mark Baijens