java desktop mailto_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,所以抱歉,我无法直接提供链接):

click me to test!

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

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

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值