java:我如何验证电子邮件地址有效,而无需发送确认电子邮件?

问题描述:

当人们注册到我的网站时,我不想给他们发送验证电子邮件,我只想检查该电子邮件是否存在。有没有办法做这样的事情?java:我如何验证电子邮件地址有效,而无需发送确认电子邮件?

使用apache-tomcat和java作为我的主要编程语言。

非常感谢!

+1

您无法强制任何电子邮件服务器确认存在有效的邮箱,并且有人查看它。 – 2010-03-01 17:33:58

您可以最高使用regex检查地址是否在语法上有效和/或查询MX records如果该域名有效,但仍不能保证该电子邮件地址是合法的并且属于有问题的注册人。真的没有比发送真实电子邮件并在短时间内等待确认更可靠的方法。

+0

这不是100%正确的答案 – 2010-03-08 06:26:56

+1

@fuzzy:也没有100%可靠的方式,电子邮件地址属于有问题的用户,这是永远不会到来的。我在你的答案中检查了网站,输入了几个我知道存在的地址,其中一些地址因为服务器不支持VRFY而失败。我不会浪费那么多时间来验证网络上其他地方的电子邮件地址。只需发送验证邮件,然后等待确认:) – BalusC 2010-03-08 11:22:14

+0

您可以连接发送RCPT消息,然后RSET,您没有看到我的解决方案实际执行的操作。 – 2010-03-08 13:41:03

不可以。无法判断电子邮件地址是否指向有效的目的地。您可以检查基本语法,并且域名在DNS中有记录,但仅此而已。

+1

更具体地说:“...在DNS中有一个** MX **记录...” – Dolph 2010-03-01 14:13:09

+2

我不同意。您可以将电子邮件发送到没有MX记录的域名。 – bmargulies 2010-03-01 14:32:41

+0

你会怎么做? – 2010-03-01 17:08:03

如果你只是想验证它看起来像一个有效的电子邮件地址,有很多样本正则表达式将验证。如果您想验证用户是否拥有该电子邮件地址的控制权,您需要向其发送一些信息并制作一个唯一的响应来验证它。

这已经在前面的问题已经回答了。如果没有验证邮件,您可以做的最好的方法就是查看电子邮件地址并查看它是否有效。您还可以检查域名等内容,以查看它是否存在并具有MX记录。无论如何,看到https://*.com/questions/3232/how-far-should-one-take-e-mail-address-validationUsing a regular expression to validate an email address

+0

看起来像一个伟大的服务,但我宁愿免费的东西。谢谢 – ufk 2010-03-02 11:29:56

相反,一些无知的答案你可以尝试连接到MX服务器,并使用VRFY命令看看服务器是否支持它。这里是一个website,这将为你做这个例子。如果你看看它与MX服务器的交换,它实际上会尝试发送一封电子邮件,但在实际发送之前进行重置。用我的电子邮件地址进行测试,但我没有收到电子邮件。所以是的,你可以做别人所说的你不能做的事。使用您认识的适用于您的域的地址,然后使用您不支持的地址。最后一个RCTP TO命令将得到550。这就是你知道它不存在的方式。

我只是想权衡并说,尽管你不愿意这样做,但请发送电子邮件并强制用户确认他们已经控制它,然后才允许将该电子邮件地址与帐户关联使用您的网站。为什么?因为没有这样做,出于任何原因,意味着用户可以使用不属于他们的电子邮件地址注册帐户。他们可能会意外地这样做,或者他们可能会这样做是非常有目的的(例如,由于许多原因而为其他账户签名);这不是犹太教,允许它的网站可以向他们的ISP报告。

(我说这是Gmail帐户的所有者,每月至少有两到三次在某个网站注册了一个帐户,该帐户不强制用户以这种方式确认他们的电子邮件地址。这太让人烦恼了,它会让你的帐户从有问题的网站中删除,我现在已经开始恢复任何密码,登录帐户,然后将电子邮件地址更改为“SOMEDUMBFUCKDOESNTKNOWHISOWNEMAILADDRESS @ gmail .com“或类似的东西......它很有趣,但我怀疑你希望这种情况发生在你的网站上。)

+4

这里的重点不在于“强迫人们确认一个电子邮件地址”,而是“不要发送电子邮件到未经确认的地址”。您可以在确认电子邮件之前创建帐户,提供您不发送任何电子邮件(除了确认尝试)或阻止其他用户尝试确认该地址。 – 2010-03-01 17:31:06

+0

感谢您的信息:) – ufk 2010-03-02 11:30:57

您可以使用openid服务检查valover电子邮件地址为*。

http://openid.net/

Email Verification services在验证电子邮件地址非常有帮助。它们大多执行6级验证,如语法验证,域MX记录检查,基于角色的帐户检测,一次性电子邮件地址(DEA)检测,HoneyPot /垃圾邮件追踪检测和深层SMTP验证。

其中大多数提供了API集成,因此,您可以直接从您的应用程序验证电子邮件地址。