微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

java-使用mailto时Outlook不处理多字节字符:

我有一个described in this question类似的问题:我正在使用“ mailto”协议从Java打开认的邮件客户端(我现在已绑定到Java 5,所以很遗憾我不能使用Desktop API).

有些电子邮件包含日语文本.字符串已经被UTF-8编码,如下所示:

private void email(String to, String subject, String body)
{
    String encodedSubject = URLEncoder.encode(subject, "UTF-8");
    String encodedBody = URLEncoder.encode(body, "UTF-8");

    String mailto = "mailto:" + to + "?subject=" + encodedSubject + 
        "&body=" + encodedBody;
    String cmd = "cmd.exe /c start \"\" \"" + mailto + "\"";
    Runtime.getRuntime().exec(cmd);
}

日语字符已正确编码为它们的URL等效项,例如,“平”变为“平”;但是,当Outlook打开新的邮件窗口时,三字节字符被解释为三个不同的字符-因此“平”被解释为“å¹³”.

我完全相信问题出在Outlook,因为以下HTML代码段会产生相同的效果(SO似乎不允许在内部标记中使用mailto,所以抱歉,我无法直接提供链接):

<html>
    <body>
    <a href="mailto:foo@bar.com?subject=%E5%b9%B3">click me to test!</a>
    </body>
</html>

简而言之,当它们来自mailto链接时,如何说服Outlook正确解释多字节字符?

编辑:要回答约翰尼斯的问题:我们有一个Java应用程序,当执行某些操作时,该应用程序会发送电子邮件.每封电子邮件的标准文本都是从资源包中提取的,在大多数情况下,我们使用JavaMail API不会出现任何问题.但是在这种情况下,要求用户能够在发送之前定制电子邮件.

如果有人可以建议使用非cmd.exe方式产生相同的效果(新邮件窗口中已预先填充主题和正文),并且请牢记我们已绑定到Java 5,那么遗憾的是,无法选择Desktop API-我会很高兴的!

解决方法:

您可以尝试以下方法

一个选项:在Outlook @中为mailto:protocol启用UTF-8支持

工具>选项>邮件格式>国际选项> [x]为mailto:protocol启用UTF-8支持

希望它对您有用

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐