Search code examples
javaemaildnsjakarta-mail

JavaMail: "Domain contains control or whitespace in string" errormessage because of domain with Danish characters


Domains with special danish characters such as æ ø å are now allowed, but I can't force java mail to accept this.

    @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();
}

All of the tests fail in either the constructor of InternetAddress or in the validate() method. How can I handle these special danish characters in the domain. I bet that other countries have the same issue with their domains vs emails in javamail InternetAddress.


Solution

  • Java Mail doesn't support i18n domain names, so you must use the standard rules to escape them using the IDNA rules.