JavaMail: “Domaine contient de contrôle ou les espaces dans la chaîne” errormessage en raison de domaine avec des caractères danois
Domaines spéciaux danois des caractères tels que æ ø å sont désormais autorisé, mais je ne peux pas la force de java mail à l'accepter.
@Test()
public void testMailAddressWithDanishCharacters1() throws AddressException, UnsupportedEncodingException {
InternetAddress cAddress = new InternetAddress( "test@testæxample12345123.com", null, "utf-8" );
System.out.println( cAddress.toString() );
cAddress.validate();
}
@Test()
public void testMailAddressWithDanishCharacters2() throws AddressException, UnsupportedEncodingException {
InternetAddress cAddress = new InternetAddress( "test@testæxample12345123.com", false );
System.out.println( cAddress.toString() );
cAddress.validate();
}
@Test()
public void testMailAddressWithDanishCharacters3() throws AddressException, UnsupportedEncodingException {
InternetAddress cAddress = new InternetAddress( "test@testæxample12345123.com", true );
System.out.println( cAddress.toString() );
cAddress.validate();
}
Tous les tests échouent dans le constructeur de InternetAddress ou dans la validation de la méthode. Comment puis-je gérer ces caractères danois dans le domaine. Je parie que d'autres pays ont le même problème avec leurs domaines vs e-mails dans javamail InternetAddress.
La version de javamail utilisez-vous?
C'est peut-être une idée stupide, mais ce qui se passe si vous URLEncode le nom de domaine?
Ou, à défaut, peut-être sous-classe
J'utilise la dernière 1.4.4
C'est peut-être une idée stupide, mais ce qui se passe si vous URLEncode le nom de domaine?
Ou, à défaut, peut-être sous-classe
InternetAddress
et de surcharger le constructeur et le validate()
fonction pour faire ce que vous voulez?J'utilise la dernière 1.4.4
OriginalL'auteur Allan | 2011-03-30
Vous devez vous connecter pour publier un commentaire.
Java Mail ne prend pas en charge i18n noms de domaine, vous devez utiliser les règles standard pour échapper à l'aide de l'IDNA règles.
Les règles devraient être appliquées au domaine de la partie ou de la totalité de l'adresse e-mail?
Question intéressante; la RFC dit "la partie à droite de la
@
" mais je ne peux pas voir si cela signifie que vous n'êtes pas autorisé à utiliser l'unicode dans le nom de la partie ou que ce serait ignoré. Mon instinct dit: ASCII Uniquement aux adresses e-mail, alors vous devriez probablement de coder. Peut-être que cela aide, mais c'est encore un projet: tools.ietf.org/html/draft-teint-xidna-email-00OriginalL'auteur Aaron Digulla
Actuellement les serveurs de messagerie n'acceptent pas les caractères non-ASCII dans les locaux de la partie, seul le nom de domaine (suivant le signe'@') est pris en charge avec les IDN.
De coder uniquement la partie de domaine avec le java.net.IDN classe, j'utilise la suite Util.
(Code non testé en production, mais il devrait fonctionner)
OriginalL'auteur felix
J'ai fait exécuter avec Java 7, javax.mail 1.4 (de repository Maven).
Et il y il a travaillé.
La java de la source de l'encodage est UTF-8. Le système d'exploitation Linux.
Ou la cause peut être que vous utilisez un jee jar.
toString()
à retourner uniquement ASCII n'est pas honoré.OriginalL'auteur Joop Eggen
Java Mail 1.6 prend en charge Internationalisés Adresses e-Mail.
https://java.net/projects/javamail/forums/forum/topics/81613-Does-JavaMail-support-Internationalized-Domain-Names-IDN-
Qu'il est encore en développement, vous pouvez essayer avec l'instantané de la libération. Également ajouter l'argument JVM
OriginalL'auteur Dungeon Hunter