解析SMTP中的实际电子邮件地址

时间:2011-10-15 10:54:13

标签: java sockets smtp

我在Java中设置套接字,用户可以输入用户ID和密码登录邮件的SMTP服务器。发送电子邮件时,我需要知道服务器上用户的电子邮件地址,以便我可以将其放入电子邮件的From:标题中。但有时,用户的ID可能与他的电子邮件地址不完全相同。例如,用户ID可以是abc_john,主机名可以是smtp.smith.com,但实际的电子邮件地址可以是john@mail.smith.com。这样的事情。这是用户名并不意味着它的实际电子邮件地址。

有没有办法解决Java中的实际电子邮件地址?我使用Socket连接他的SMTP服务器, JavaMail API。我希望是否有可以返回实际电子邮件地址的SMTP命令。

2 个答案:

答案 0 :(得分:2)

向SMTP服务器发送VRFY命令,将用户名指定为参数。如果服务器支持VRFY(它是可选但推荐的命令),则响应应包括用户邮箱的完整电子邮件地址。有关详细信息,请参阅RFC 2821

答案 1 :(得分:0)

根据使用的用户名和SMTP服务器,您无法获取任何内容。单个SMTP服务器可以充当多个域的MX(例如,我的公司使用gmail作为其邮件提供商,但我们的电子邮件地址仅来自我们的公司域)。在过去(垃圾邮件兴起之前),您可以使用 - 至少在理论上 - 任何SMTP服务器为任何给定的电子邮件发送邮件。

简单地说:用户需要以这种或那种方式提供完整的电子邮件地址。