如何在Java Mail中设置非SMTP认证邮件的发件地址

7

我正在使用setFrom()方法指定“FROM”地址,但我仍然收到具有SMTP身份验证邮件ID的“FROM”地址的邮件,并希望动态设置“FROM”地址,该地址不断变化。如何符合RFC282标准实现此目标。


4个回答

5

谷歌的解决方案是这样的

Gmail允许您使用另一个电子邮件地址作为发件人,而不是您的Gmail地址。此功能可帮助您从Gmail界面管理多个帐户;仅当您已拥有与备用地址链接的电子邮件帐户时才有效。

  1. 选择“帐户和导入”选项卡(如果您使用Google应用程序,则为“帐户”选项卡)。 在“发送邮件作为”下,单击“添加其他电子邮件地址”。 在“电子邮件地址”字段中,输入您的姓名和备用电子邮件地址。 选择以下两个选项之一: 使用Gmail的服务器发送邮件(这更易于设置) 使用其他电子邮件提供商的SMTP服务器(我们建议专业邮件帐户或域名使用此选项)。 Google应用程序用户注意事项:根据您的域2类型,此功能可能已被默认禁用。如有疑问,请与管理员联系。 如果您选择使用Gmail的服务器:

  2. 单击“下一步>>”,然后单击“发送验证”。 Gmail将向您的其他电子邮件地址发送验证消息,以确认您拥有它。

  3. 打开您的其他帐户,然后单击Gmail发送的消息中的链接或在Gmail设置的“帐户”部分中输入确认代码。

有关更多信息,请按以下链接

https://support.google.com/mail/bin/answer.py?hl=zh-Hans&answer=22370

所涉及的开销是,任何新的发件地址都需要在Gmail认证邮件帐户中设置别名。这不适用于企业可扩展应用程序。

另一种解决方案是安装邮件服务器(hmailServer)。此服务器允许您设置自定义发件地址。

如果有人知道其他解决方案,请告诉我。


1
请避免仅提供链接的回答。 - Quentin
Gmail的博客链接更新速度比其帮助页面慢得多,我认为:http://gmailblog.blogspot.com/2009/07/send-mail-from-another-address-without.html - Frank

4

这取决于你的邮件服务器。通常,邮件服务器会阻止你使用除实际登录名以外的任何发件地址,以防止垃圾邮件。根据你的邮件服务器不同,可能有方法说服它允许你使用其他的发件地址。


2

您所讨论的是两件不同的事情:

您提到的id是smtp握手协议的一部分,通常映射到mime头中的“Return-path”字段。

而在“FROM”字段中出现的id实际上是在撰写邮件时由邮件服务器添加的。

因此,如果您可以修改mime头,则确保“FROM:”字段包含您要设置的id,而不是smtp身份验证id。

顺便说一下,这是rfc822标准。

曾在rediffmail技术团队工作,以开发和增强smtp、pop和imap协议。


2
这取决于您的邮件服务器和配置设置。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接