有没有可能在MAILTO链接的正文中添加HTML链接?

138

我以前很少接触mailto链接。然而,现在如果可能的话,我需要在mailto的正文中添加一个链接。

是否有一种方式可以添加链接或更改打开的电子邮件为HTML电子邮件而非纯文本电子邮件?

类似这样的:

<a href="mailto:test@test.test?body=The message's first paragraph.%0A%0aSecond paragraph.%0A%0AThird Paragraph.%0A%0ALink goes here">Link text goes here</a>

5
真有趣,10年后人们将这个问题标记为另一个在3年后提出的问题的重复:))) 为什么?即使那个问题的答案也没有区别,并且RFC 2368标准也没有更新。 - Amir-Mousavi
7个回答

132

根据RFC 2368的第2节,body字段应该使用text/plain格式,因此无法使用HTML。

但是,即使您使用纯文本,一些现代邮件客户端仍然可能将URL呈现为可点击的链接。


iOS上的Safari可以渲染<b>、<i>和<img>等标签,但<a>标签不确定。 - Andrew Ferrier
1
我可以确认,在Windows上使用Thunderbird时,将URL渲染为链接(对于接收者而言),因此无需添加任何<a>标签。 - Pedro Araujo Jorge
Outlook也能理解吗? - undefined

36

请添加完整链接,并包括:

 "http://"

将链接放置在一行的开头,大多数良好的邮件客户端在发送之前或接收时都会自动链接它。

对于由于所有参数而可能换行的非常长的URL,可以将链接放在小于/大于符号中。这会告诉邮件客户端不要换行URL。

例如:

  <http://www.example.com/foo.php?this=a&really=long&url=with&lots=and&lots=and&lots=of&prameters=on_it>

可以在MacOS和iOS上的Mail应用程序中使用,也可以在MacOS上的Chrome上的GMail以及iOS上的Mail应用程序中使用。 - Lars Juel Jensen

8
据我所知,这似乎是不可能的,因为链接需要HTML,而mailto链接不会创建HTML电子邮件。
这可能是出于安全考虑,因为您可以将JavaScript或iframe添加到此链接中,邮件客户端可能会使最终用户面临漏洞。

7
请检查以下在IE中的JavaScript代码。不确定其他现代浏览器是否可行。
<html>
    <head>
        <script type="text/javascript">
            function OpenOutlookDoc(){
                try {

                    var outlookApp = new ActiveXObject("Outlook.Application");
                    var nameSpace = outlookApp.getNameSpace("MAPI");
                    mailFolder = nameSpace.getDefaultFolder(6);
                    mailItem = mailFolder.Items.add('IPM.Note.FormA');
                    mailItem.Subject="a subject test";
                    mailItem.To = "an@email.here";
                    mailItem.HTMLBody = "<b>bold</b>";
                    mailItem.display (0); 
                }
                catch(e){
                    alert(e);
                    // act on any error that you get
                }
            }
        </script>
    </head>
    <body>
        <a href="javascript:OpenOutlookDoc()">Click</a>
    </body>
</html>

1
我刚刚尝试了你的示例,但是出现了错误:“ReferenceError: ActiveXObject未定义”。 - Rodney Hickman
3
我发现ActiveXObject仅在Internet Explorer中受支持,而不在Metro风格的应用程序中。无论如何还是谢谢。 - Rodney Hickman
11
这个解决方案只适用于一个反乌托邦的未来世界,其中微软掌控一切,而“互联网探险家”仍在让网络开发人员的生活痛苦不堪。 - pmarreck

2

'mailto'的规范指出:

邮件正文只是由US-ASCII字符组成的行。 正文的唯二限制如下:

  • CR和LF必须一起出现作为CRLF; 它们不得单独出现在正文中。
  • 正文中的字符行必须限制在998个字符以内,并且应该限制在78个字符以内,不包括CRLF。

https://www.rfc-editor.org/rfc/rfc5322#section-2.3

现在大多数电子邮件客户端都有自动链接的功能,但并非所有客户端都支持,这是由于安全问题。你可能能找到一些解决方法,但它不一定适用于所有情况。


1
我已经实现了以下内容,它在iOS设备上运行良好,但在Android设备上失败了。
<a  href="mailto:?subject=Your mate might be interested...&body=<div style='padding: 0;'><div style='padding: 0;'><p>I found this on the site I think you might find it interesting.  <a href='@(Request.Url.ToString())' >Click here </a></p></div></div>">Share This</a>

1
这是我整理的内容。它在我需要的某个移动设备上能正常工作,但我不确定这个解决方案的普适性。
<a href="mailto:me@me.com?subject=Me&body=%3Chtml%20xmlns%3D%22http:%2F%2Fwww.w3.org%2F1999%2Fxhtml%22%3E%3C%2Fhead%3E%3Cbody%3EPlease%20%3Ca%20href%3D%22http:%2F%2Fwww.w3.org%22%3Eclick%3C%2Fa%3E%20me%3C%2Fbody%3E%3C%2Fhtml%3E">

4
我尝试了你的示例...没有起作用... - Harshit Tailor

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接