【问题标题】:Is it possible to add an HTML link in the body of a MAILTO link [duplicate]是否可以在 MAILTO 链接的正文中添加 HTML 链接 [重复]
【发布时间】:2026-02-21 12:05:01
【问题描述】:

我不必过多地处理 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>

【问题讨论】:

  • 这真的很有趣,10 年后人们将此问题标记为与 3 年后提出的另一个问题的重复 :))) 为什么?即使那个问题的答案也没有什么不同,RFC 2368 标准也没有更新

标签: html email mailto


【解决方案1】:

RFC 2368 的第 2 节说 body 字段应该是 text/plain 格式,所以你不能做 HTML。

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

【讨论】:

  • iOS 上的 Safari 会呈现 等标签。不确定
  • 我可以确认 Windows 上的 Thunderbird 将 url 呈现为链接(到接收者),因此不需要添加任何 标签。
【解决方案2】:

添加完整链接,其中:

 "http://"

到一行的开头,大多数体面的电子邮件客户端会在发送之前自动链接它,或者在接收时在另一端自动链接。

对于很长的 url,可能会由于所有参数而换行,请将链接换成小于/大于符号。这告诉电子邮件客户端包装网址。

例如

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

【讨论】:

  • 适用于 MacOS 和 iOS 上的邮件应用,适用于 MacOS 上的 Chrome 上的 GMail,以及 iOS 上的邮件应用。
【解决方案3】:

据我所知,这是不可能的,因为链接需要 HTML,而 mailto 链接不会创建 HTML 电子邮件。

这可能是出于安全考虑,因为您可以将 javascript 或 iframe 添加到此链接,并且电子邮件客户端可能会打开最终用户的漏洞。

【讨论】:

    【解决方案4】:

    请检查以下 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>
    

    【讨论】:

    • 我刚试过你的例子,我得到了错误:“ReferenceError: ActiveXObject is not defined”
    • 我发现只有 Internet Explorer 支持 ActiveXObject,Metro 风格的应用程序不支持。还是谢谢。
    • 这个解决方案只适用于一个反乌托邦的未来世界,在这个世界里,微软掌管一切,而 Internet Exploiter 仍在让 Web 开发人员的生活变得悲惨。
    【解决方案5】:

    这是我整理的。它适用于我需要它的选定移动设备,但我不确定该解决方案的通用性如何

    <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">
    

    【讨论】:

    • 我试过你的例子......不工作......
    【解决方案6】:

    我已经在 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>
    

    【讨论】:

      【解决方案7】:

      “mailto”正文的规范说:

      消息的正文只是几行 US-ASCII 字符。这 身体上只有两个限制如下:

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

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

      出于安全考虑,现在大多数电子邮件客户端通常都擅长自动链接,但并非所有客户端都这样做。您可能会找到一些变通方法,但不一定适用。

      【讨论】: