4

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

我尝试了以下方法:

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

  • 像清单 16.16 中这样直接向我自己的电子邮件地址发送电子邮件(没有找到英文示例)。问题是现在每个电子邮件服务器都使用 POP 身份验证,这意味着收件人电子邮件服务器不会接受我的电子邮件。

  • 像这样使用 mailto URL 语法。也不能正常工作,因为附件功能在每个电子邮件客户端中都不能正常工作。到目前为止最好的解决方案是提示用户自己添加附件,然后我将其放到他的桌面上。或者上传数据并添加指向电子邮件正文的链接。

  • 我找到的最后一种方法是这个。你可以假设这也行不通,因为本地主机需要连接到互联网并且有足够的能力发送电子邮件。

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

4

1 回答 1

4

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

但是,如果您不能/不想/不会保留此服务器端,我建议您使用 JavaMail 创建一个MimeMessage,然后使用writeTo()将其写入 EML 文件。

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

Desktop.getDesktop().open(emlFile);

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

于 2013-01-23T12:58:39.627 回答