从Java应用程序发送电子邮件的最佳方式

时间:2013-01-23 12:40:57

标签: java email javamail attachment mailto

我一直在寻找通过我的java应用程序发送电子邮件附件的最佳方式。我想将此用作带有记录器文件的用户错误报告。收件人应该是我自己的电子邮件地址。我更喜欢使用电子邮件客户端。

我尝试了以下内容:

  • 发送电子邮件,其中包含this等用户身份验证。我不想使用它,因为用户需要透露他的电子邮件帐户和密码。此外,我必须为每个电子邮件地址设置属性,这是不可能的。

  • 直接发送电子邮件到我自己的电子邮件地址,如this in Listing 16.16 (didnt found an english example)。问题是现在每个电子邮件服务器都使用POP身份验证,这意味着收件人电子邮件服务器将不接受我的电子邮件。

  • 使用this之类的mailto URL语法。也不起作用,因为附件功能在每个电子邮件客户端中都无法正常工作。到目前为止,最好的解决方案是向用户简要介绍在我将其放入桌面后自己添加附件。或者上传数据并添加指向电子邮件正文的链接。

  • 我找到的最后一种方法是this one。您可以认为这也不起作用,因为localhost需要连接到互联网并且足以发送电子邮件。

希望我能很好地解释我的问题。是否有不同的方式发送错误报告?

1 个答案:

答案 0 :(得分:4)

解决您描述的问题的普遍接受的方法是保留所有电子邮件逻辑服务器端,然后让您的应用程序使用适当的参数调用Web服务。敲一下将完成工作的PHP脚本/ servlet,然后通过电子邮件发送结果,将它们放入mysql数据库等等,这很容易。

但是,如果您不能/不希望保留此服务器端,我建议使用JavaMail创建MimeMessage,然后使用writeTo()来编写此代码到EML文件。

然后你可以做通常的事情:

Desktop.getDesktop().open(emlFile);

...将使用默认应用程序打开EML文件以处理这些文件,这几乎总是邮件客户端。仍然不是万无一失,但如果您决定直接从客户端发送电子邮件,我认为这就像您将获得的一样好。