javax.mail:mail
からcom.sun.mail:javax.mail
に最近切り替えました。 次のコードが失敗したので:com.sun.mailに切り替えた後、ウムラウトでInternetAddressを使用します。javax.mail
new InternetAddress("[email protected]öllers.de", false).validate();
Caught: javax.mail.internet.AddressException: Domain contains control or whitespace in string ``[email protected]öllers.de''
javax.mail.internet.AddressException: Domain contains control or whitespace in string ``[email protected]öllers.de''
InternetAddress#validate()
の実装は明らかに変化しています。 - 間違っている、例えば
else if (c <= 040 || c >= 0177) {
throw new AddressException(
"Domain contains control or whitespace", addr);
すべてチャーコントロールまたは空白として扱われ> = 177:CRLFチェックに関するいくつかの追加の行は、このスニペットが続きますウムラウトについては(ö= 246)。 例外メッセージは誤解を招きます。
validate()の変更によってバグが導入されましたか?
これまでのところ、インターネット電子メールアドレスにはpunycodeでエンコードされたウムラウトが含まれている可能性があります。それで、私はウムラウトで文字列を渡すのが安全だと思ったのです。
この場合、InternetAddressはエンコードされたStringで使用する予定ですか?ビルShannonsへのアップデートが答える
事前に
おかげ
私のコメントで述べきれいにフォーマットのGroovyスクリプト:
@GrabResolver(name='snapshots', root='https://maven.java.net/content/repositories/snapshots/', m2Compatible='true')
@Grab("com.sun.mail:javax.mail:1.6.0-SNAPSHOT")
import javax.mail.internet.InternetAddress
new InternetAddress("[email protected]öllers.de", false)
更新:最新のスナップショットでテスト
import org.junit.Test;
import javax.mail.internet.AddressException;
import javax.mail.internet.InternetAddress;
public class ValidateEmailTest {
@Test
public void test() throws AddressException {
new InternetAddress("[email protected]öllers.de", true).validate();
new InternetAddress("[email protected]öllers.de", false).validate();
}
}
テストは正常に実行されます(noドメイン名に非ASCII文字の火2月21
インフラストラクチャはまだ非ASCII文字をサポートしていません。 しかし、私はまだ次のGroovyスクリプトが失敗することに驚いています。 @GrabResolver(名= 'スナップショット'、ルート= 'HTTPS://maven.java.net/content/repositories/snapshots/'、m2Compatible = '真') @Grab(「com.sun.mail :のjavax.mail:1.6.0-SNAPSHOT ") 輸入javax.mail.internet.InternetAddress 新たInternetAddress(" [email protected]öllers.de」、偽) 私は現在のスナップショット1.6を使用しています。0と結果は次のとおりです。 javax.mail.internet.AddressException:ドメインは、文字列内のコントロールや空白が含まれている ''[email protected]öllers.de '' ありがとうございます。 –
上記のスクリプトを元の質問に追加しました。 –
私はGroovyについて何も知らないけど、実際には適切なJavaMail jarファイルがないと思う。同等の簡単なJavaプログラムは正常に動作します。 –