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支持

希望它对您有用

相关文章

Windows2012R2备用域控搭建 前置操作 域控主域控的主dns:自...
主域控角色迁移和夺取(转载) 转载自:http://yupeizhi.blo...
Windows2012R2 NTP时间同步 Windows2012R2里没有了internet时...
Windows注册表操作基础代码 Windows下对注册表进行操作使用的...
黑客常用WinAPI函数整理之前的博客写了很多关于Windows编程的...
一个简单的Windows Socket可复用框架说起网络编程,无非是建...