mailto link with HTML body
我在HTML文档中有几个
1 |
我可以在
1 | Mail me |
注意,(2016)在iOS中,添加
正如您在RFC 6068中看到的,这根本不可能:
The special
"body" indicates that the associated
is the body of the message. The"body" field value is intended to
contain the content for the first text/plain body part of the
message. The"body" pseudo header field is primarily intended for
the generation of short text messages for automatic processing (such
as"subscribe" messages for mailing lists), not for general MIME
bodies.
不,根本不可能。
虽然不可能使用HTML来格式化电子邮件正文,但是您可以像前面建议的那样添加换行符。
如果您能够使用javascript,那么"encodeuricomponent()"的用法可能如下…
1 2 3 4 5 | var formattedBody ="FirstLine Second Line Third Line"; var mailToLink ="mailto:[email protected]?body=" + encodeURIComponent(formattedBody); window.location.href = mailToLink; |
我用过这个,它似乎与Outlook一起工作,而不是使用HTML,但是至少当正文作为输出添加时,您可以用换行符来格式化文本。
4这不完全是您想要的,但是可以使用现代的javascript在客户端创建一个EML文件,并将其传输到用户的文件系统,该系统将在其邮件程序中打开一封包含HTML的富电子邮件,如Outlook:
https://stackoverflow.com/a/27971771/8595398
这是一封包含图片和表格的电子邮件的jsfidle:https://jsfiddle.net/seanodotcom/yd1n8lfh/
HTML
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 | <!-- 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"><span class="pastdue">PAST DUE</span> INVOICE</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> <button id="create">Create file</button> Download |
JavaScript
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | (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); })(); |
有些事情是可能的,但不是全部,比如说你想要换行,而不是使用
例子:
1 | <img src="images/email.png" alt="EMail PDF Brochure" /> |
值得指出的是,在iPhone上的Safari上,至少可以在
正如其他反应所指出的,在将其嵌入
可以输入unicode值来插入换行符(例如:
我是这样工作的:
1 2 3 | var newLine = escape(" "); var body ="Hello" + newLine +"World"; |
输出为:
1 2 | Hello World |
以下是如何将所有内容添加到mailto链接:
1 | Shipping Request |
每个组件都由符号(&;)分隔。只有初始电子邮件地址后的第一个组件有问号(?)在与号之前。
URL编码是关键!所以以你的身体为例,而不是
1 |
…你可以尝试:
1 |
这是你可以尝试的另一条路线。创建一个javascript函数来打开一个ActiveX对象。这具有只在IE和Outlook中工作的不幸限制,并且可能导致页面显示ActiveX警告。但如果你能接受这些警告,它就可以做到。以下是您可以从中提取的工作样本:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 | <html> <head> <script type='text/javascript' language='javascript'> function OpenOutlookNewEmail() { 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 ="Me"; mailItem.To ="[email protected]"; mailItem.HTMLBody ="ME"; mailItem.display(0); } catch (e) { alert(e); // act on any error that you get } } </head> <body> </body> </html> |