mailto
链接。<a href="mailto:etc...">
我可以在
mailto:
的href
部分插入HTML格式的正文吗? > <a href="mailto:me@me.com?subject=Me&body=<b>ME</b>">Mail me</a>
请注意(2016)在iOS中,最好添加
<i>
和<b>
标签以实现简单的斜体,粗体格式。#1 楼
如您在RFC 6068中所看到的,这是完全不可能的:特殊的
<hfname>
“ body”表示关联的<hfvalue>
是消息的正文。 “正文”字段值旨在
包含
消息的第一个文本/纯文本正文部分的内容。 “ body”伪标题字段主要用于
用于自动处理的短文本消息的生成(例如,邮件列表的“ subscribe”消息),而不是用于常规的MIME正文。
评论
@JoeBlow答案仍然是正确的。淘汰2368的RFC 6068仍说正文是纯文本。
– Markus Laire
16年8月5日在9:18
如果您对此答案感到失望,请继续阅读:stackoverflow.com/a/46699855/256272(tl.dr .eml文件)
–乔
18年5月24日在5:20
#2 楼
虽然无法使用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;
评论
电子邮件客户端可以运行嵌入式Javascript吗? OP说这是一封电子邮件,而不是mailto:链接所在的网页。
–wide_eyed_pupil
2012年9月19日在7:27
谢谢,在Rails中,您可以使用raw(“ text \ n更多文本\ n \ n \ t”)函数封装文本,并将其转换为换行符和电子邮件正文的制表符
– FireDragon
2013年9月5日20:38在
这对我有用,从Chrome的“ mailto”发送到Outlook。请注意,您只能编码正文,而不是整个mailto字符串;并且\ n之前/之后不需要空格。
–卢克
2014年11月12日21:42
我喜欢这种方法,下面是一个jsfiddle可以在实际中查看它:jsfiddle.net/oligray/5uosngy4
–奥利弗·格雷
15年11月20日在10:32
您也可以仅将%0A用作换行符,因此无需通过JavaScript进行操作。
–德克·波尔(Dirk Boer)
16年4月5日在9:09
#3 楼
否。根本不可能。评论
并非完全正确。尽管支持非常稀缺,但其他答案表明,iOS以及IE + ActiveX + Outlook(urgh,yuck)的组合可能会限制HTML的使用。
–西蒙东
17-10-7在7:37
#4 楼
我已经使用了它,它似乎可以与Outlook一起使用,而不是使用html,但是至少在将正文作为输出添加时,您可以使用换行符设置文本格式。<a href="mailto:email@address.com?subject=Hello world&body=Line one%0DLine two">Email me</a>
评论
因此“%0D”是换行符。编码标签的等效代码是什么?
–wide_eyed_pupil
2012年9月19日在7:29
%0D是一个换行符,它是ctrl-m,制表符是ctrl-i,它是%09。看看这样的ASCII图表[asciitable.com/index/asciifull.gif]。控制字符从1到31。@wide_eyed_pupil
–吉姆·伯格曼(Jim Bergman)
2012年12月7日下午6:16
这样做时似乎删除了所有签名。
– Valentin Despa
13年7月10日在7:56
%0A为\ n
– Klemen Tusar
16-10-14在13:09
那不是HTML正文!
– Chloe
17年10月9日在18:04
#5 楼
这不是您想要的,但是可以使用现代javascript在客户端上创建EML文件并将其流式传输到用户的文件系统,该文件系统应在其邮件程序中打开包含HTML的丰富电子邮件,例如Outlook:https://stackoverflow.com/a/27971771/8595398
这是包含图像和表格的电子邮件的jsfiddle: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>95.00</td>
</tr>
<tr>
<td>OU812</td>
<td>9</td>
<td>95.00</td>
</tr>
<tr>
<td>OU812</td>
<td>9</td>
<td>95.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>
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);
})();
评论
现在,这是个好主意
–格雷格
17年12月4日在21:31
简洁的想法,但仅作记录,在最新的Apple Mail中,此文件将打开,但不可编辑/发送,其作用类似于已发送的电子邮件记录
– pmarreck
17年12月6日在20:58
使用Apple Mail(11.2),打开.eml文件后,可以从菜单(shift-cmd-D)中选择“消息/再次发送”,以将电子邮件置于编辑模式。
–杰夫·科利尔(Jeff Collier)
18年3月12日在22:25
在Android和iOS上呢?我不相信.eml文件会打开,除非您有阅读器应用程序
–宛如焕
7月28日17:29
这个解决方案将在另一个类似的问题上进行探讨。但是事实证明,@ JamesBell提到:令人不愉快的更新:Chrome(自v.46起)已开始将.EML文件标记为可能是恶意文件。不知道文本文件可能会导致什么恐怖,但我认为它们是有原因的。 –詹姆士·贝尔16年6月29日在20:03
–yougotiger
9月2日,19:12
#6 楼
有些事情是可能的,但不是全部,例如,您要换行,而不是使用<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>
评论
那不是HTML ...还是文本。
–布拉德
2014年12月2日在4:22
如果您使用$ mailheader格式化电子邮件,则不会。=“ Content-type:text / html; charset = iso-8859-1 \ r \ n”;
–斯蒂芬·考夫曼(Stephen Kaufman)
2014年12月9日16:30
@StephenKaufman-您不是发送电子邮件的人,而是单击链接的客户。意味着您不知道如何设置电子邮件客户端。您不知道其标题是如何设置的。这将对某些电子邮件客户端有效,而对其他电子邮件客户端则无效。
– Narxx
2014年12月17日在12:08
谢谢,这对我来说是第二好的选择,如果我不能做html,那么至少我可以做回车。我没意见。
–希望
19年11月6日在17:48
#7 楼
值得指出的是,至少在iPhone上的Safari上,将基本的HTML标签(例如<b>
,<i>
和<img>
(理想情况下,无论如何在其他情况下都不要使用,最好使用CSS)插入)中的body参数中mailto:
确实可以正常工作-他们在电子邮件客户端中很荣幸。我尚未进行详尽的测试,以查看其他移动或桌面浏览器/电子邮件客户端组合是否支持此功能。这是否真的符合标准也值得怀疑。但是,如果要为该平台构建,则可能会很有用。如其他答复所指出的那样,在将其嵌入到
mailto:
链接中之前,还应该在整个主体上使用encodeURIComponent。评论
是的,无论如何,在iOS中添加简单的粗体,斜体标签确实非常有效。
–法蒂
16年8月3日在16:40
在iOS上,我无法使用发送正确的电子邮件-在Gmail中,我的邮件中看到base64。
– Vitaly Zdanevich
19年2月6日在9:21
#8 楼
Thunderbird支持html-body
:mailto:me@me.com?subject=Me&html-body=<b>ME</b>
#9 楼
任何人都可以尝试以下操作(mailto函数仅接受纯文本,但在这里我展示了如何使用HTML内部文本属性以及如何将锚点添加为mailto正文参数)://Create as many html elements you need.
const titleElement = document.createElement("DIV");
titleElement.innerHTML = this.shareInformation.title; // Just some string
//Here I create an <a> so I can use href property
const titleLinkElement = document.createElement("a");
titleLinkElement.href = this.shareInformation.link; // This is a url
...
let mail = document.createElement("a");
// Using es6 template literals add the html innerText property and anchor element created to mailto body parameter
mail.href =
`mailto:?subject=${titleElement.innerText}&body=${titleLinkElement}%0D%0A${abstractElement.innerText}`;
mail.click();
// Notice how I use ${titleLinkElement} that is an anchor element, so mailto uses its href and renders the url I needed
评论
有完全相同的想法,并研究了一段时间。我试图将嵌入式嵌入到消息正文中。 mailto指令需要进行URL编码才能起作用。雷鸟的结果是HTML正文按原样出现,带有所有指令和所有内容。我想这是雷鸟和大多数邮件客户端的安全问题-他们解析传入的mailto-content,以便它不会做任何可疑的事情。我能找到的最好的东西来自此页面zaposphere.com/html-email-links-code ..底部下方列出了一个列表:“其他大多数网站都未提及的其他酷定制!!”对我有很大帮助。
您可以使用基本文本设置电子邮件的每个部分。关于无法进行html格式化的限制,这是我构建的工具,用于自定义mailto dead中的各个字段很简单:mailto.now.sh