mailto标签来调用邮箱客户端

好久不见. 提交于 2019-11-26 17:10:15

最近项目需要使用mailto标签来调用客户端,并且把邮件模板填到客户端。

mailto 的用法:

a标签直接调用:

 

<a href="mailto:example@qq.com?cc=example2@qq.com&subject=有未结算的单据&body=您有未付清的账单">发送邮件</a>

js调用:

sendEmial(){
            var subject = "余额通知";
            var to = "test@qq.com";
            var cc = "bc.@126.com";
            var body = "你好,您的余额不足1 %0d%0a换行";
            var url="";
            url="mailto:"+to+"?cc="+cc+"&subject="+subject+"&body="+body;
            document.location.href=url;
}

使用mailto乱码与mailto无关,所以解决方法从客户端来做。

我们的项目只要求支持foxmail和outlook。我们直接按上面的写法,outlook正常,foxmail乱码。

经过测试发现foxmail支持GBK编码,所有从后台直接把内容转换成GBK:如:URLEncoder.encode("内容","gbk");则内容转换成GBK:%b1%ea%cc%e2;把它直接赋给body,foxmail乱码解决。

此时再看outlook,转换成GBK后,outlook乱码了。解决办法:

 

打开outlook——工具——选项——邮件格式——国际选项——Internet协议(对mailto:协议启用UTF-8支持)复选框去除选中——点击确定就OK了。(outlook中文版默认是选中的,去除选中即可)
这样乱码问题就解决了。不过对于outlook可能得挨个设置了。
总结:针对不同的情况,我们去设置不同字符编码即可。
附:更改window默认邮件客户端,修改注册表:
[HKEY_CURRENT_USER\Software\Microsoft\Windows\Shell\Associations\UrlAssociations\mailto\UserChoice]
"Progid"="outlook.URL.mailto"
或者
[HKEY_CURRENT_USER\Software\Microsoft\Windows\Shell\Associations\UrlAssociations\mailto\UserChoice]
"Progid"="foxmail.URL.mailto"
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!