【问题标题】:How to know if a email address is invalid?如何知道电子邮件地址是否无效?
【发布时间】:2010-11-20 23:06:20
【问题描述】:

我在 www.email.it 上的电子邮件地址已被禁用,因为我已经很长时间没有使用它了。

现在,当我去 FB 时,我会收到以下消息:

"Our systems have detected that xxxxxxx@email.it is no longer a valid email. "

所以我的问题是:

这些系统如何检测电子邮件是否有效?

【问题讨论】:

  • @Michael - 我假设是 Facebook。

标签: php web-services email


【解决方案1】:

您无法检测电子邮件是否是假的。您所能做的就是检测字符串是否符合有效电子邮件地址格式的RFC 5322。除非您拥有此服务器,否则您不可能知道是否已在目标 SMTP 服务器上声明了此类帐户。您或许可以尝试向该地址发送电子邮件,看看远程 SMTP 服务器会响应什么。

【讨论】:

  • 如果电子邮件地址是假的,当我向这个电子邮件地址发送电子邮件时,SMTP 服务器应该响应什么?
  • 尝试将邮件发送到您已禁用的帐户并亲自查看。
  • 好的,但是我如何使用 PHP 来做到这一点?我通过 PHP 发送电子邮件,然后?
  • xRobot,在 PHP 中,从您可以控制的帐户向该帐户发送电子邮件。然后服务器“硬退回”将返回此地址。
【解决方案2】:

您无法可靠地确定电子邮件是否有效。 SMTP 服务器应该实现VRFY 命令,但许多服务器禁用此功能以防止垃圾邮件发送者能够检测到有效的电子邮件地址。

此外,即使电子邮件地址遵循 RFC 5322 有效电子邮件地址格式,也不意味着它是目标服务器上的有效电子邮件地址;许多服务器没有正确实现这个标准!

您可以做的最好的事情是向该地址发送一封电子邮件,并在电子邮件中包含点击返回链接。如果电子邮件地址有效并且用户阅读了电子邮件并且用户单击了链接,则可能是电子邮件地址有效(它也可能被拦截,从而给你一个误报)。

如果邮件被退回,则可能表明该电子邮件地址无效(但也可能是目标服务器已关闭,邮箱已满,或者谁知道其他情况)。

如您所见,鉴于 SMTP 在实践中的运行情况,它非常不可靠。

【讨论】:

    【解决方案3】:

    Facebook 很可能试图向该地址发送邮件。他们知道地址无效,因为邮件被退回。

    【讨论】:

      【解决方案4】:

      也许他们试图向所述主机发送一封电子邮件(例如更新 EULA)并且它以不友好的方式回复 - 因此“无效”

      SMTP 在处理(或不处理)统一的“无法传递”消息方面有点愚蠢,但各种检测可能“足够好”(VRFY、检查自动回复消息等) )

      【讨论】:

        【解决方案5】:

        我很确定 FB 已经向您发送了任何类型的电子邮件,并且由于您的邮件已被删除或停用......您的电子邮件将退回给他们,并显示如下错误消息:

        No such user 
        mailbox unavailable 
        etc  ..
        

        所以他们能够知道并停用您的帐户

        如果您想知道该错误消息,只需发送一封电子邮件并等待它回复给您

        简单但方便:)

        【讨论】:

          【解决方案6】:

          一些公司所做的(可能还有 FB,虽然我不确定)是定期向该帐户发送一封电子邮件,只是为了查看它是否“实时” - 他们会要求接收者单击上的链接以证明电子邮件地址仍在使用中。

          在几封没有收到回复(或者是bounced)的此类电子邮件之后,他们会认为该电子邮件地址“已死”。

          【讨论】:

            猜你喜欢
            • 2011-05-13
            • 2022-07-11
            • 2021-07-03
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2014-11-25
            • 2011-10-25
            • 2017-01-10
            相关资源
            最近更新 更多