2015-09-16 4 views
0

Je suppose que ce qui suit lancerait mais pas.javax.mail.internet.InternetAddress RFC 822 validation

new javax.mail.internet.InternetAddress("[email protected]").validate 

Ma version javax.mail est 1.4. (et java version 8 si c'est important). S'agit-il d'une adresse électronique valide selon la RFC822 que validate() prétend respecter? http://sphinx.mythic-beasts.com/~pdw/cgi-bin/emailvalidate dit que ce qui précède n'est pas une adresse e-mail RFC822 valide.

+1

https://java.net/projects/javamail/sources/mercurial/content/mail/src/main/java/javax/mail/internet/InternetAddress.java ? rev = 557 La ligne 1268 semble tester cette possibilité et déclenche une exception si elle le trouve. Donc vous avez raison, ça ne devrait pas être valide. Juste une question stupide, est-ce important si vous utilisez validate() au lieu de valider? Ou pourrait-il s'agir d'un problème Unicode vs. ASCII? – Duston

+0

J'utilise ceci dans Scala, donc j'ai écrit 'validate' sans le'() '. C'est la même chose cependant. Je pense que vous voulez dire 1286 pour la ligne, et oui, on dirait que c'est le cas. Bien que regardant le code, je ne suis plus sûr de mon utilisation de cette bibliothèque, il semble très mal écrit. – 0fnt

Répondre

1

De l'documentation:

Les contrôles de mise en œuvre actuelle beaucoup, mais pas tous, des règles de syntaxe.

Si vous le pouvez, mettez à niveau votre version JavaMail.

public static void main(String[] args) throws Exception { 
    Session.getInstance(new Properties()).setDebug(true); 
    new javax.mail.internet.InternetAddress("[email protected]").validate(); 
} 

Sorties:

DEBUG: setDebug: JavaMail version 1.5.4 
Exception in thread "main" javax.mail.internet.AddressException: Domain contains dot-dot in string ``[email protected]'' 
    at javax.mail.internet.InternetAddress.checkAddress(InternetAddress.java:1282) 
    at javax.mail.internet.InternetAddress.parse(InternetAddress.java:1099) 
    at javax.mail.internet.InternetAddress.parse(InternetAddress.java:638) 
    at javax.mail.internet.InternetAddress.<init>(InternetAddress.java:111)