有没有办法让电子邮件客户端(Outlook)接受来自HTML中mailto链接的特殊字符?我试图在邮件正文中使用带有德语字符的mailto链接,但是在Outlook中我只得到了奇怪的字符。
谢谢。
FF -> Thunderbird: 如果主题进行了url编码,则失败,否则正常。
FF -> Outlook: 如果主题未进行url编码,则失败,如果已编码则正常。 (这是在Windows上,在Ubuntu Linux上,FF和TB始终正常工作)。
希望这对其他遇到同样问题的人有所帮助。
在PHP中,我认为与Outlook最兼容的函数是rawurlencode()
您需要为mailto:协议启用UTF-8支持
从主要的Outlook窗口,点击“工具” -> “选项” -> “邮件格式” -> “国际选项” -> “启用mailto:协议的UTF-8支持”。
rawurlencode()
函数最适合在Outlook中使用,已在Firefox、Chrome和IE中进行测试。
听起来你需要包含mailto链接的页面使用Outlook期望的编码方式。如果不了解更多情况,我建议尝试使用UTF-8和ISO-8859-1编码方式。
更多相关情况包括出现了哪些奇怪字符以及页面当前使用的编码方式。
encodeURIComponent
函数来处理主题和正文。这样,邮件中的所有特殊字符都会被正确显示。const emailRequest = {
to: "abc@xyz.com",
cc: "abc@xyz.com",
subject: "Email Request - for <CompanyName>",
body: `Hi All, \r\n \r\n This is my company <CompanyName>
\r\n Thanks`,
};
const subject = encodeURIComponent(emailRequest.subject.replace("<CompanyName>", 'ABC & ** Company'));
const body = encodeURIComponent(emailRequest.body.replace("<CompanyName>", 'ABC & ** Company'));
window.location.href = (`mailto:${emailRequest.to}?cc=${emailRequest.cc}&subject=${subject}&body=${body}`);