提问人:GxG 提问时间:4/11/2011 最后编辑:BalusCGxG 更新时间:7/13/2023 访问量:602869
mail链接到 HTML 正文
mailto link with HTML body
问:
我在 HTML 文档中有几个链接。mailto
<a href="mailto:etc...">
我可以在 ?mailto:
href
<a href="mailto:[email protected]?subject=Me&body=<b>ME</b>">Mail me</a>
请注意,在 iOS 中 (2016),添加和标签以进行简单的斜体、粗体格式是完全可以的。<i>
<b>
答:
我已经使用了它,它似乎适用于 outlook,而不是使用 html,但至少在将正文添加为输出时,您可以使用换行符格式化文本。
<a href="mailto:[email protected]?subject=Hello world&body=Line one%0DLine two">Email me</a>
评论
虽然不可能使用 HTML 来格式化您的电子邮件正文,但您可以按照之前的建议添加换行符。
如果您能够使用 javascript,那么“encodeURIComponent()”可能会像下面这样有用......
var formattedBody = "FirstLine \n Second Line \n Third Line";
var mailToLink = "mailto:[email protected]?body=" + encodeURIComponent(formattedBody);
window.location.href = mailToLink;
评论
raw("text \n more text \n\n\t")
\n
值得指出的是,至少在 iPhone 上的 Safari 上,将基本的 HTML 标签(例如 、 和 )插入到 body 参数中,例如 、 和 (理想情况下,无论如何您都不应该在其他情况下使用,更喜欢 CSS)确实可以工作 - 它们在电子邮件客户端中是有效的。我还没有做过详尽的测试,看看其他移动或桌面浏览器/电子邮件客户端组合是否支持这一点。这是否真的符合标准也是值得怀疑的。不过,如果您正在为该平台构建,可能会很有用。<b>
<i>
<img>
mailto:
正如其他响应所指出的,在将 encodeURIComponent 嵌入到链接中之前,您还应该在整个正文上使用 encodeURIComponent。mailto:
评论
正如您在 RFC 6068 中看到的那样,这根本不可能:
特殊的“正文”表示关联的是消息的正文。“body”字段值旨在 包含第一个文本/纯正文部分的内容 消息。“body”伪标头字段主要用于 生成用于自动处理的短文本消息(如 作为邮件列表的“订阅”邮件),而不是一般的 MIME 机构。
<hfname>
<hfvalue>
评论
有些事情是可能的,但不是全部,例如,你想要换行符,而不是使用 use<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>
评论
这并不完全是您想要的,但可以使用现代 javascript 在客户端上创建一个 EML 文件并将其流式传输到用户的文件系统,这应该会在他们的邮件程序(例如 Outlook)中打开包含 HTML 的丰富电子邮件:
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 <[email protected]>
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>
Java脚本
(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);
})();
评论
任何人都可以尝试以下操作(mailto 函数只接受纯文本,但在这里我展示了如何使用 HTML innertext 属性以及如何添加锚点作为 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
Thunderbird 支持:html-body
mailto:[email protected]?subject=Me&html-body=<b>ME</b>
虽然在 URL 的参数中可能无法实现,但有一个厚颜无耻的解决方案可以允许完整的 HTML。这个概念是你在页面上有一个隐藏的元素(我在下面的例子中使用了 Bootstrap 和 Jquery),它被暂时显示并复制了 HTML(如这里:如何将文本从 div 复制到剪贴板)。之后,您将用户重定向到邮件链接,因此实际上他们所要做的就是在他们指定的邮件程序中点击粘贴。我只在 Linux/Thunderbird 上测试过,但粘贴也适用于 Gmail 网络。
<div id="copyEmailText" class="d-none"><p><strong>This is some HTML</strong>. Please hit paste when your email program opens.</p>
function copyDivToClipboard(element) {
var range = document.createRange();
range.selectNode(element);
window.getSelection().removeAllRanges(); // clear current selection
window.getSelection().addRange(range); // to select text
document.execCommand('copy');
window.getSelection().removeAllRanges();// to deselect
}
$('#copyEmail').on('click',function(){
$('#copyEmailText').toggleClass('d-none');
copyDivToClipboard($('#copyEmailText')[0]);
window.location.href = 'mailto:?subject=Email subject text';
$('#copyEmailText').toggleClass('d-none');
})
评论