html之邮寄特殊字符

jillzhang 阅读:1091 2023-11-05 18:46:41 评论:0

有没有办法让电子邮件客户端( 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”服务的链接,如下所示:

http://url.com/service.php?service=util.mailtoencode&mailto=mail%40coretrek.no%3Fsubject%3Demne+%C3%B8%C3%A6%C3%A5+emne

该页面会将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.作者投稿可能会经我们编辑修改或补充。

全民解析

全民解析

关注我们