如何确定电子邮件地址是否无效?

5

由于我长时间未使用,我的www.email.it上的电子邮件地址已被禁用。

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

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

我的问题是:

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


1
@Michael - 我猜测是Facebook。 - Oded
6个回答

5

你无法检测出一个电子邮件是否是伪造的。你能做的只是检测一个字符串是否符合有效电子邮件地址格式的RFC 5322规范。除非你拥有目标SMTP服务器,否则你不可能知道是否已在该服务器上声明了这样的帐户。你可以尝试向此地址发送电子邮件,并查看远程SMTP服务器的响应。


如果电子邮件地址是假的,当我向该电子邮件地址发送电子邮件时,SMTP服务器应该如何响应? - xRobot
尝试向您被禁用的帐户发送邮件并亲自查看。 - JJJ
好的,但是我如何使用PHP实现这个呢?例如,我通过PHP发送了一封电子邮件,接下来呢? - xRobot
xRobot,在PHP中,向一个你有控制权的账户发送电子邮件。服务器将会返回到这个地址上的“硬退信”。 - Luke Peterson

2
您无法可靠地确定电子邮件是否有效。SMTP服务器应该实现 VRFY 命令,但许多服务器已将其禁用,以防止垃圾邮件发送者能够检测到有效的电子邮件地址。
此外,即使电子邮件地址符合 RFC 5322 有效电子邮件地址格式,也不意味着它是目标服务器上的有效电子邮件地址;许多服务器没有正确实现此标准!
您能做的最好的事情就是向该地址发送一封带有回退链接的电子邮件。如果电子邮件地址有效且用户阅读电子邮件并点击链接,则可能是电子邮件地址有效(也可能已被拦截,从而给出虚假的肯定结果)。
如果电子邮件反弹回来,则可能表明该电子邮件地址无效(但也可能是目标服务器宕机、邮箱已满或其他原因)。
正如您所看到的,SMTP 在实践中运作得非常好,但其可靠性相当低下。

2

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


2
也许他们试图向该主机发送电子邮件(例如更新EULA),但它的回应不友好,因此出现了“无效”。
SMTP在处理或不处理“无法投递”消息方面有些愚蠢,但各种检测方法可能已经足够好(如VRFY、检查自动回复消息等)。

2

我相信FB曾经向你发送过电子邮件,但由于你的邮件已被删除或停用......因此你的邮件会反弹回去,并显示以下错误信息:

No such user 
mailbox unavailable 
etc  ..

他们能够知道并停用你的账户。 如果你想知道这个错误消息,只需要发送一封电子邮件,等待它回复给你即可。 简单而实用 :)

1
一些公司(可能包括 FB,但我不确定)会定期向账户发送电子邮件,仅仅是为了确认它是否“活跃” - 他们会要求接收者点击其中的链接以证明该电子邮件地址仍在使用。
如果有几封这样的电子邮件没有得到回复(或被退回),他们将认为该电子邮件地址已经“死亡”。

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