Adr*_*ian 18 java email jakarta-mail internationalization java-8
我想发送一封电子邮件到非ASCII电子邮件地址,我不确定使用JDK8的推荐程序是什么.
我该如何处理以下电子邮件地址?
是否有任何安全注意事项需要注意?
这个示例代码是否足够?
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);
}
}
Run Code Online (Sandbox Code Playgroud)
Pawe\xc5\x82 基本上是正确的,如果您的服务器支持 SMTPUTF8 扩展,则地址应编码为 UTF-8。\nJavaMail 1.6 版本中支持 SMTPUTF8。
\n\n要启用此支持,您需要将 JavaMail Session 属性\n 设置mail.mime.allowutf8为true。请务必仅当邮件服务器支持 UTF-8 时才设置它。
对于旧版本的 JavaMail,可能的解决方法包括将 Java Unicode 字符串转换为 UTF-8 编码的字节数组,然后创建一个 Java Unicode 字符串,其中每个字节都是单独的 iso-8859-1 字符。我还没有尝试过,所以我不知道它是否会遇到其他问题。
\n\n例如:
\n\naddress = new String(address.getBytes("utf-8"), "iso-8859-1");\nRun Code Online (Sandbox Code Playgroud)\n
| 归档时间: |
|
| 查看次数: |
1407 次 |
| 最近记录: |