2

我正在尝试创建一个包含法语重音字符作为主题和电子邮件正文的 mailto 链接。对字符进行编码的 HTML 和 URI 都不起作用。这是我的代码:

<a href="mailto:%20?subject=ce%20titre%20est%20cass%C3%A9.&body=travaux%20deja!%20cesser%20d'%C3%AAtre%20t%C3%AAtu">SEND EMAIL</a>

没有 URI 编码也会出现同样的结果:

<a href="mailto:?subject=ce titre est cassé&body=travaux deja! cesser d'être têtu">SEND EMAIL</a>

不管我是怎么做的,新电子邮件都会以损坏的字符打开。URI 编码的空格和换行符可以正常工作,但任何不是 ANSI 的东西都会被破坏。我应该注意,我正在测试 MS Outlook 2007 的英语和法语版本。有人知道如何让它工作吗?

4

4 回答 4

3

在 IE 8 中,它是一个设置选项。工具 -> 选项 -> 高级。在 International 下选中“Use UTF-8 for mailto links”选项。

在 Windows XP 下,默认情况下禁用此设置。在 Windows 7 下默认启用。

希望这可以帮助

于 2012-01-03T16:35:19.453 回答
2

邮件标头(包括主题)中的所有内容都必须根据此 RFC 进行 MIME 编码,

http://www.ietf.org/rfc/rfc2047.txt

这样做并非易事,但您可以在大多数语言中找到处理它的代码。

正确编码的文本如下所示,

=?ISO-8859-1?B?SWYgeW91IGNhbiByZWFkIHRoaXMgeW8=?=

编辑:试试这个,看看它是否是你想要的,

<a href="mailto:your@email.com?subject=%3d%3fISO-8859-1%3fB%3fY2UgdGl0cmUgZXN0IGNhc3Pp%3f%3d&Content-Type=text%2fplain%3b+charset%3dISO-8859-1&body=travaux%20deja!%20cesser%20d'%C3%AAtre%20t%C3%AAtu">SEND EMAIL</a>

用您的地址替换电子邮件。

于 2009-09-24T15:45:50.970 回答
1

例如,使用 mootools(但可能是另一个框架,甚至是“原始”javascript),我通常会这样做,并且它适用于 mac/pc 与主要浏览器/客户端:

window.addEvent('domready', function(){
    //get the links to encode
    var links_to_encode = $$('#page ul li a');

    links_to_encode.each(function(link){
        //check if the link has an href
        var original_href = link.get('href');
        if(original_href){
            //substitute it with the encoded version
            link.set('href',encodeURI(original_href));
        }
    });
});//fine domready

再见!

于 2011-02-09T16:10:47.857 回答
1

Got it! This may or may not be a bug in Microsoft Outlook/Entourage. I changed my default mail reader to Mail.app and it works beautifully with urlencoding. The (maybe) bug only appears to affect one of the 2 accented e characters in your example. Perhaps Outlook/Entourage is not handling miltibyte UTF8 chars correctly?

于 2009-09-24T16:45:27.167 回答