mailto链接与HTML正文

GxG*_*GxG 300 html mailto email

mailto在HTML文档中有几个链接.

<a href="mailto:etc...">
Run Code Online (Sandbox Code Playgroud)

我可以在mailto:部分中插入HTML格式的正文href吗?

<a href="mailto:me@me.com?subject=Me&body=<b>ME</b>">Mail me</a>
Run Code Online (Sandbox Code Playgroud)

请注意,在iOS中,(2016),添加<i><b>标记为简单的斜体,粗体格式是完全正常的.

小智 412

正如您在RFC 6068中所看到的,这根本不可能:

特殊的<hfname>"正文"表示关联的<hfvalue> 是消息的正文."body"字段值旨在包含消息的第一个text/plain正文部分的内容."body"伪头字段主要用于生成用于自动处理的短文本消息(例如邮件列表的"订阅"消息),而不是用于一般MIME主体.

  • 如果您对此答案感到失望,请继续阅读:/sf/answers/3268989881/(tl; dr .eml文件) (5认同)
  • @JoeBlow答案仍然正确.废弃2368的[RFC 6068](https://www.ietf.org/rfc/rfc6068.txt)仍然说身体是纯文本. (4认同)

Que*_*tin 93

不,这根本不可能.

  • 不完全正确。虽然支持非常少,但其他答案表明,在 iOS 和 IE+ActiveX+Outlook 的组合中可以使用一些有限的 HTML(呃,糟糕)。 (5认同)

Oli*_*ain 84

虽然无法使用HTML格式化您的电子邮件正文,但您可以按照之前的建议添加换行符.

如果你能够使用javascript,那么"encodeURIComponent()"可能会像下面这样使用...

var formattedBody = "FirstLine \n Second Line \n Third Line";
var mailToLink = "mailto:x@y.com?body=" + encodeURIComponent(formattedBody);
window.location.href = mailToLink;
Run Code Online (Sandbox Code Playgroud)

  • 您也可以使用%0A进行换行,因此您无需使用JavaScript. (3认同)
  • 我喜欢这种方法,这里有一个jsfiddle来看它的实际效果:https://jsfiddle.net/oligray/5uosngy4/ (2认同)

小智 55

我已经使用了它,它似乎与outlook一起使用,而不是使用html,但你可以使用换行符格式化文本,至少在将主体添加为输出时.

<a href="mailto:email@address.com?subject=Hello world&body=Line one%0DLine two">Email me</a>
Run Code Online (Sandbox Code Playgroud)

  • %0D是换行符,它是ctrl-m,tab是ctrl-i,它是%09.看看像这样的ASCII图表[http://www.asciitable.com/index/asciifull.gif].控制字符为1到31. @wide_eyed_pupil (3认同)
  • 所以"%0D"是换行符.什么是编码标签的代码等价? (2认同)
  • 这样做时似乎删除了所有签名。 (2认同)
  • 那不是HTML正文! (2认同)

Mat*_*hew 37

它不是你想要的,但是可以使用现代的javascript在客户端上创建一个EML文件并将其传输到用户的文件系统,该文件系统应该在其邮件程序中打开包含HTML的富电子邮件,例如Outlook:

/sf/answers/1958024001/

这是一个包含图像和表格的电子邮件:https://jsfiddle.net/seanodotcom/yd1n8Lfh/

HTML

<!-- https://jsfiddle.net/seanodotcom/yd1n8Lfh -->
<textarea id="textbox" style="width: 300px; height: 600px;">
To: User <user@domain.demo>
Subject: Subject
X-Unsent: 1
Content-Type: text/html

<html>
<head>
<style>
    body, html, table {
        font-family: Calibri, Arial, sans-serif;
    }
    .pastdue { color: crimson; }
    table {
        border: 1px solid silver;
        padding: 6px;
    }
    thead {
        text-align: center;
        font-size: 1.2em;
        color: navy;
        background-color: silver;
        font-weight: bold;
    }
    tbody td {
        text-align: center;
    }
</style>
</head>
<body>
<table width=100%>
    <tr>
        <td><img src="http://www.laurell.com/images/logo/laurell_logo_storefront.jpg" width="200" height="57" alt=""></td>
        <td align="right"><h1><span class="pastdue">PAST DUE</span> INVOICE</h1></td>
    </tr>
</table>
<table width=100%>
    <thead>
        <th>Invoice #</th>
        <th>Days Overdue</th>
        <th>Amount Owed</th>
    </thead>
    <tbody>
    <tr>
        <td>OU812</td>
        <td>9</td>
        <td>$4395.00</td>
    </tr>
    <tr>
        <td>OU812</td>
        <td>9</td>
        <td>$4395.00</td>
    </tr>
    <tr>
        <td>OU812</td>
        <td>9</td>
        <td>$4395.00</td>
    </tr>
    </tbody>
</table>
</body>
</html>
</textarea> <br>
<button id="create">Create file</button><br><br>
<a download="message.eml" id="downloadlink" style="display: none">Download</a>
Run Code Online (Sandbox Code Playgroud)

使用Javascript

(function () {
var textFile = null,
  makeTextFile = function (text) {
    var data = new Blob([text], {type: 'text/plain'});
    if (textFile !== null) {
      window.URL.revokeObjectURL(textFile);
    }
    textFile = window.URL.createObjectURL(data);
    return textFile;
  };

  var create = document.getElementById('create'),
    textbox = document.getElementById('textbox');
  create.addEventListener('click', function () {
    var link = document.getElementById('downloadlink');
    link.href = makeTextFile(textbox.value);
    link.style.display = 'block';
  }, false);
})();
Run Code Online (Sandbox Code Playgroud)

  • 现在这是一个奇特的想法 (8认同)
  • 在另一个类似的[问题](/sf/ask/1956629041/#27971771)中探讨了此解决方案。然而事实证明,@JamesBell 提到:令人不快的更新:Chrome(从 v.46 开始)已经开始将 .EML 文件标记为可能是恶意的。不知道文本文件会造成什么恐怖,但我认为他们有他们的理由。– 詹姆斯·贝尔 2016 年 6 月 29 日 20:03 (5认同)
  • 干净的想法,但只是为了记录,在最新的Apple Mail上,这个文件将打开,但不会被编辑/发送,它就像一个发送的电子邮件记录 (2认同)
  • 使用 Apple Mail (11.2),打开 .eml 文件后,您可以从菜单 (shift-cmd-D) 中选择 Message / Send Again 以将电子邮件置于编辑模式。 (2认同)

小智 25

有些事情是可能的,但不是全部,例如你想要换行,而不是<br />使用%0D%0A

例:

<a href="mailto:?subject=&body=Hello,%0D%0A%0D%0AHere is the link to the PDF Brochure.%0D%0A%0D%0ATo view the brochure please click the following link: http://www.uyslist.com/yachts/brochure.pdf"><img src="images/email.png" alt="EMail PDF Brochure" /></a>                        
Run Code Online (Sandbox Code Playgroud)

  • @StephenKaufman - 您不是发送电子邮件的人,而是点击该链接的客户.这意味着您不知道如何设置电子邮件客户端.你不知道它的标题是如何设置的.这适用于某些电子邮件客户端,而不适用于其他客户端. (12认同)
  • 这不是HTML ...仍然是文本. (7认同)

And*_*ier 16

这是值得指出的是,在Safari在iPhone,至少,将基本的HTML标记,如<b>,<i><img>(在理想情况下,你不应该在其他情况下使用了,无论如何,宁愿CSS)插入身体参数mailto:确实出现了工作 - 他们在电子邮件客户端中受到尊重.我还没有进行详尽的测试,看看是否有其他移动或桌面浏览器/电子邮件客户端组合支持.它是否真的符合标准也是不确定的.但是,如果您正在为该平台构建,那么可能会很有用.

正如其他响应所指出的那样,在将其嵌入mailto:链接之前,还应该在整个主体上使用encodeURIComponent .


Pet*_*ter 8

雷鸟支持 html-bodymailto:me@me.com?subject=Me&html-body=<b>ME</b>