我想从 Javascript 网络应用程序创建电子邮件。我完全知道关于这个的许多 SO 问题(例如 Open Outlook HTML with Chrome )。典型答案有问题:
Mailto: 链接:这将允许您创建电子邮件,但只能是纯文本(无 HTML)并且不允许附件。
Activex:仅限 IE,我的应用程序也需要在 Firefox 和 Chrome 中运行。允许 ActiveX 的 FF 和 Chrome 插件是安全隐患,而且似乎有问题。
服务器端通过 SMTP 发送:电子邮件最终不会出现在用户的“已发送”文件夹中。加上允许用户在浏览器中编辑 HTML 和附加文件的障碍。
创建一个 Outlook .MSG 文件:似乎没有库,也没有关于如何做的文章。显然,该文件格式实际上嵌入了整个 FAT 文件存储系统。
许多其他 SO 问题和我的问题之间的主要区别:
- 我确实可以访问客户端机器,所以我可以安装 帮助应用程序或加载项,根据需要更改设置等。
- 接口(interface)不需要实际发送邮件,它只需要 为用户进行设置。
- 我还需要能够为电子邮件提供 JS 附件(例如 PDF)。
我不是第一个遇到这个问题的网络应用程序开发人员,但我无法找到商业或开源解决方案。
更新:
我使用了 EML 文件方法,到目前为止效果很好。这是我创建和触发它的 JS 代码:
var emlContent = "data:message/rfc822 eml;charset=utf-8,";
emlContent += 'To: '+emailTo+'\n';
emlContent += 'Subject: '+emailSubject+'\n';
emlContent += 'X-Unsent: 1'+'\n';
emlContent += 'Content-Type: text/html'+'\n';
emlContent += ''+'\n';
emlContent += htmlDocument;
var encodedUri = encodeURI(emlContent); //encode spaces etc like a url
var a = document.createElement('a'); //make a link in document
var linkText = document.createTextNode("fileLink");
a.appendChild(linkText);
a.href = encodedUri;
a.id = 'fileLink';
a.download = 'filename.eml';
a.style = "display:none;"; //hidden link
document.body.appendChild(a);
document.getElementById('fileLink').click(); //click the link
最佳答案
MSG 文件格式为 documented ,但这肯定不好玩...... 为什么不创建 EML (MIME) 文件?
建议使用 EML (MIME) 格式。根据 OP,他们考虑了 MSG 文件格式(#4),但由于其复杂性和缺乏处理该格式的 JS 库而感到沮丧。如果考虑 MSG 文件,MIME 是更好的选择 - 它是基于文本的,因此不需要特殊的库来创建它。 Outlook 将能够像打开 MSG 文件一样轻松地打开它。
要确保 EML 邮件被 Outlook 视为未发送的邮件,请将 X-Unsent
MIME header 设置为 1。
最简单的 EML 文件如下所示:
To: Joe The User <joe@domain.demo>
Subject: Test EML message
X-Unsent: 1
Content-Type: text/html
<html>
<body>
Test message with <b>bold</b> text.
</body>
</html>
关于javascript - 使用 Javascript 在 Microsoft Outlook 中创建 HTML 电子邮件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27951843/