【问题标题】:Resolving the actual email address in SMTP解析 SMTP 中的实际电子邮件地址
【发布时间】:2011-12-08 07:21:28
【问题描述】:

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

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

【问题讨论】:

    标签: java sockets smtp


    【解决方案1】:

    向 SMTP 服务器发送 VRFY 命令,指定用户名作为参数。如果服务器支持VRFY(这是一个可选但推荐的命令),则响应应包括用户邮箱的完整电子邮件地址。详情请参考RFC 2821

    【讨论】:

      【解决方案2】:

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

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

      【讨论】:

      • 如果用户可以输入任何他想要的地址作为他的电子邮件地址,那不是很容易垃圾邮件和强加吗?就像他可以尝试强加给别人一样。当然,邮件的标题会暴露他的身份,但不是每个人都不会一直阅读标题。
      • 这取决于邮件服务器的确切配置。邮件服务器通常不允许任何不属于他们的电子邮件地址作为发件人,除非配置为允许特定用户使用。
      猜你喜欢
      • 2011-01-07
      • 2011-03-11
      • 2019-04-03
      • 2011-11-27
      • 2011-05-14
      • 1970-01-01
      • 1970-01-01
      • 2013-01-24
      • 1970-01-01
      相关资源
      最近更新 更多