繁体   English   中英

从java代码发送邮件 - 可靠的方式

[英]Sending mail from java code - the reliable way

从您的应用程序发送邮件是非常常见的事情,在大多数情况下,这是一个真正的痛苦......你知道在哪里。

所以我正在做的是采用Apache Commons Email(基于“官方”java邮件api的顶部)并且我以最简单的方式发送电子邮件,即没有对smtp服务器进行身份验证。 我只是在目标主机名上进行简单的MX查找,获取MX服务器并尝试在第一个上删除我的消息(邮件是否被拒绝是一个完全不同的问题,我可能很快会问一个关于完全搞乱了return-path:vs. from:vs. reply-to:以及这些头文件在(不)在java中处理的方式)。 回到商业...所以我只是试图在邮件服务器上删除我的消息,并且优先级最低。

这是一个例子:我想写信给recipient@domain.com MX Lookup告诉我domain.com知道两个MX服务器,例如mail1.domain.com ,优先级为10, mail2.domain.com优先级为20. rfc做事情的方法是去服务器最不喜欢并将邮件丢弃。 这就是我的工作。

最后我的问题:如果该服务器不能以某种方式提供,会发生什么? 这很简单 - 我去其他服务器,但Apache Commons(我怀疑java mail api)不允许我这样做。 mail.smtp.host变量植根于电子邮件中消息中会话的props。 我无法得到它。

那么处理这个问题的最佳方法是什么? 我应该使用新的主机名(mail2)从顶部完全构建我的电子邮件,还是有一些聪明的方法可以让这一切在java中完成而不会有太多痛苦?

如果您正在尝试实现部分邮件服务器,而不仅仅是发送电子邮件,这听起来就是这样。 路由,中继,缓存和传递重试是由所有邮件服务器实现和提供的操作,通常不由邮件客户端完成。

您应该做的是使用(一个!)现有邮件服务器,为您配置允许中继出站邮件,或者如果您无法访问此类服务器(我怀疑),请设置并运行您自己的服务器。 然后,您可以在mail.smtp.host配置服务器,并忘记所有关于DNS查找,服务器优先级以及如果没有任何MX服务器可以访问该怎么做的担心。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM