gpt4 book ai didi

Java:将电子邮件发送到非 ASCII 电子邮件地址

转载 作者:太空狗 更新时间:2023-10-29 22:41:27 32 4
gpt4 key购买 nike

我想向非 ASCII 电子邮件地址发送电子邮件,但我不确定使用 JDK8 的推荐程序是什么。

我应该如何处理以下电子邮件地址?

  1. Dörte@example.com
  2. test@Sörensen.de
  3. Dörte@Sörensen.de

是否有任何需要注意的安全注意事项?

这个示例代码就够了吗?

import java.net.IDN;


public class IDNMailHelper {

public static String toIdnAddress(String mail) {
if (mail == null) {
return null;
}
int idx = mail.indexOf('@');
if (idx < 0) {
return mail;
}
return localPart(mail, idx) + "@" + IDN.toASCII(domain(mail, idx));
}

private static String localPart(String mail, int idx) {
return mail.substring(0, idx);
}

private static String domain(String mail, int idx) {
return mail.substring(idx + 1);
}

}

最佳答案

如果您的服务器支持 SMTPUTF8 扩展,Paweł 基本上是正确的,地址应编码为 UTF-8。JavaMail 1.6 版本支持 SMTPUTF8。

要启用此支持,您需要设置 JavaMail Session 属性mail.mime.allowutf8true。请务必在邮件发送时设置它服务器支持UTF-8。

对于旧版本的 JavaMail,一种可能的解决方法是将 Java Unicode 字符串转换为 UTF-8 编码的字节数组,然后创建一个 Java Unicode 字符串,其中每个字节都是一个单独的 iso-8859-1 字符。我没有尝试过这个,所以我不知道它是否会遇到其他问题。

例如:

address = new String(address.getBytes("utf-8"), "iso-8859-1");

关于Java:将电子邮件发送到非 ASCII 电子邮件地址,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40132961/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com