【问题标题】:java: how can i verify an email address to be valid without sending a confirmation e-mail?java:如何在不发送确认电子邮件的情况下验证电子邮件地址是否有效?
【发布时间】:2011-01-22 07:32:08
【问题描述】:

当人们注册到我的网站时,我不想向他们发送验证电子邮件,我只想检查该电子邮件是否存在。有没有办法做这样的事情?

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

非常感谢!

【问题讨论】:

  • 您不能强制任何电子邮件服务器确认存在有效邮箱并且有人查看它。

标签: java email-verification


【解决方案1】:

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

【讨论】:

  • 更具体地说:“...在 DNS 中有一个 MX 记录...”
  • 我不同意。您可以将电子邮件发送到没有 MX 记录的域。
  • 主机可以完美地在端口 25 上运行 SMTP 服务器,而无需任何 MX 记录。 MX 记录的存在是为了告诉您发往某个 DNS 名称的邮件应该被递送到某个其他域。如果 foo.bar.baz.com 有一个 SMTP 服务器,它不需要 MX 记录来接受邮件。
【解决方案2】:

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

【讨论】:

  • @fuzzy:电子邮件地址属于相关用户也不是 100% 可靠的方式,而且这永远不会发生。我在您的回答中检查了该站点,输入了几个我知道它们存在的地址,其中一些地址失败了,因为服务器不支持 VRFY。我不会浪费太多时间来验证网络上其他地方的电子邮件地址。只需发送一封验证电子邮件并等待确认:)
  • 你可以连接发送一个RCPT消息然后RSET它,你没有看我的解决方案实际上做了什么。
【解决方案3】:

与一些未受过教育的答案相反,您可以尝试连接到 MX 服务器并使用 VRFY 命令查看服务器是否支持它。这是一个website,它将作为示例为您执行此操作。如果您查看它与 MX 服务器的交换,它实际上会尝试发送电子邮件,但在实际发送之前会执行 RESET。用我的电子邮件地址测试它有效,但我没有收到电子邮件。所以是的,你可以做其他人说你不能做的事情。使用您知道适用于您的域的地址,然后使用您不支持的地址。您将在最后一个 RCTP TO 命令上获得 550。这样你就知道它不存在了。

【讨论】:

    【解决方案4】:

    我只是想权衡一下,尽管您不愿意这样做,请发送一封电子邮件并强制用户确认他们可以控制它,然后才允许将该电子邮件地址与您的帐户关联使用地点。为什么?因为出于任何原因不这样做意味着用户可以使用不属于他们的电子邮件地址注册帐户。他们可能会这样做是偶然的,或者他们可能是故意这样做的(例如,出于各种原因为他人注册帐户);这就是不洁净,允许它的网站可以向其 ISP 报告。

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

    【讨论】:

    • 这里的重点不是“强迫人们确认电子邮件地址”,而是“不要向未经确认的地址发送电子邮件”。您可以在电子邮件被确认之前创建帐户,前提是您不发送任何电子邮件(确认尝试除外)或阻止其他用户尝试确认该地址。
    【解决方案5】:

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

    【讨论】:

      【解决方案6】:

      如果您只是想验证它看起来像一个有效的电子邮件地址,那么有许多示例正则表达式可以验证这一点。如果您想验证用户对电子邮件地址的控制权,您需要向它发送一些内容并制作一个独特的回复来验证它。

      【讨论】:

        【解决方案7】:

        【讨论】:

        • 看起来服务很棒,但我更喜欢免费的。谢谢
        【解决方案8】:

        您可以像 stackoverflow 一样使用 openid 服务来检查有效的电子邮件地址。

        http://openid.net/

        【讨论】:

          【解决方案9】:

          Email Verification services 在验证电子邮件地址方面非常有用。他们中的大多数执行 6 个级别的验证,如语法验证、域 MX 记录检查、基于角色的帐户检测、一次性电子邮件地址 (DEA) 检测、HoneyPot/垃圾邮件跟踪检测和深度 SMTP 验证。

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

          【讨论】:

            猜你喜欢
            • 2011-12-29
            • 2017-09-10
            • 2010-10-08
            • 2021-07-03
            • 1970-01-01
            • 2021-10-21
            • 2013-05-18
            • 1970-01-01
            • 2015-10-21
            相关资源
            最近更新 更多