html之邮寄特殊字符
有没有办法让电子邮件客户端( Outlook )接受来自 html 中的 mailto 链接的特殊字符?我试图在正文中建立一个带有德语字符的 mailto 链接,但在 Outlook 中我只得到奇怪的字符。
谢谢
请您参考如下方法:
我刚刚花了 2 天时间调查这个问题。我们的问题是 mailto: 如果 subject= 字符串包含非 ascii 字符,例如挪威字符,我们 utf-8 编码网页上的链接对 Outlook 用户不起作用。一个例子是: "mailto:mail@coretrek.no?subject=julegløgg og fårikål"
据我目前所了解的,Outlook 只处理 ASCII 和 iso-8859-1 字符以外的任何字符。因此,当试图点击上面的 mailto 链接时(无论是从 IE 还是 Firefox),Outlook 无法解码字符,导致主题损坏并包含“奇怪”的字符。
所以下一步是尝试用 ISO-8859-1 重新编码页面。我们所做的是将 utf-8 页面上的原始 mailto 链接替换为指向“email-to-iso”服务的链接,如下所示:
该页面会将mailto 字符转换为iso-8859-1,然后将整个页面内容输出为iso-8859-1。页面上包含“location.href='mailto:...'”的 javascript 用于自动打开客户端的电子邮件客户端。
目前看来一切正常。这实际上适用于 Internet Explorer,包括 Thunderbird 和 Outlook(在 WinXP 上的 IE7 和 Outlook express 和 TB 2 上测试过)。
但现在的问题实际上是 Firefox。似乎 Firefox 无法解码包含仅在 ISO-8859-1 中找到但在 ASCII 中找不到的字符的 url 编码 url(如挪威语 å,在编码时由 %E5 表示)。如果页面编码为 utf-8,同样的 å 处理正确,但似乎 Firefox 开发人员忘记了测试特殊字符和 ISO-8859-1 字符集。 结果是 Firefox 将未解码的字符串(仍然包含 %E5 而不是 å)传递给电子邮件客户端。而且,令人惊奇的是,这由 Outlook(设法解码字符串本身)正确处理,但不是由 Thunderbird 处理,它可能具有与 Firefox 相同的错误。如果您不对主题进行 url 编码,则字符串会正确传递给 Thunderbird,但不会传递给 Outlook。
我们也一直在尝试其他编码方法,例如php的htmlentities、htmlspecialchars、base64编码等,但都以某种方式失败。
所以,总结一下:
以 utf-8 编码的页面:
IE 总是失败
FF -> 雷鸟:好的
FF -> 展望:失败
以 iso-8859-1 编码的页面:
即:好的
FF -> Thunderbird:如果主题是 url 编码的,则失败,如果不是,则正常)
FF -> Outlook:如果主题未经过 url 编码则失败,如果已编码则正常) (这是 Windows,在 Ubuntu Linux FF 和 TB 上总是工作正常)。
希望这对遇到同样问题的其他人有所帮助。
1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。