我的目标是向服务器发送请求,并通过响应(EML格式)打开Outlook和Thunderbird,用户可以在那里编辑电子邮件文本并将其发送出去。
我使用Javaservlet生成具有以下标题的响应(我认为这不重要):
Content-Type: message/rfc822
Content-Disposition: attachment; filename="email.eml"
问题是浏览器会下载文件,而不是直接在浏览器中打开它。我试过
Content-Disposition: inline; filename="email.eml"
但也有同样的问题。我用IE10和Chrome 38进行了测试,两者都有类似的行为。
如果用户点击下载的文件,电子邮件应用程序会正确打开,他们可以发送电子邮件,但下载的文件仍在磁盘上,会产生大量垃圾。
有什么想法吗?
我能想到的唯一替代解决方案是使用mailto协议。
https://www.rfc-editor.org/rfc/rfc2368
Mailto允许您指定常用的电子邮件字段,如正文、主题、发送地址等。
要自动打开电子邮件,请使用以下JavaScript:
// Setting these here for the sake or readability.
var toaddress = "email@address.com";
var subject = "Subject Line";
var body = "Message contents here.nnNewlines work too";
window.location = "mailto:?to=" + encodeURIComponent(toaddress)
+ "&subject=" + encodeURIComponent(subject) + "&body="
+ encodeURIComponent(body);
使用它,您可以修改servlet以返回主题、正文和AJAX调用的地址,并在返回后执行上面的代码片段。
然而,对此持谨慎态度,因为标准中列出的任何规范都完全取决于所使用的电子邮件客户端(例如,正文HTML?)。