【问题标题】:Is there an alternative to email verification?是否有电子邮件验证的替代方法?
【发布时间】:2011-10-26 11:02:05
【问题描述】:

如果不升级,我就无法访问 SMTP 服务器,我现在也不能。

我可以使用任何其他方法来确保用户在我的数据库中输入有效的电子邮件地址。至少在接下来的几周内,我必须使用免费的网络主机(目前是 xtreemhost)。我刚刚完成了网站,想先测试一下。

我在网站上使用 php-mysql。

【问题讨论】:

  • 啊,我有一个关于如何发送带有随机令牌的电子邮件的答案。但后来我意识到你没有 smtp。 :(
  • 不要忘记,即使是“有效的电子邮件地址”也可能是由该地址所有者以外的其他人提交的,因此该电子邮件地址的所有者会被您的网站发送垃圾邮件,从而导致到您的网站被列入黑名单。您必须找到一种方法来确保电子邮件地址的所有者确实希望订阅您的网站。顺便说一句,SMTP 是最好的方法。

标签: php mysql email smtp


【解决方案1】:

简介

您可以验证电子邮件的表单,这意味着您可以判断它是否是有效的电子邮件地址,但您无法检查该电子邮件地址是否真的存在

回答

至于验证本身,有很多种方法,

  • 一个是使用filter_var()

     filter_var('bob@example.com', FILTER_VALIDATE_EMAIL)
    

旁注:不建议使用 REGEX 来验证电子邮件。如果你这样做了,Jon Skeet 会在晚上来找你。

【讨论】:

  • 我知道你在说什么,因为我确实使用 reg exps 进行验证,但仅此而已。我只是想知道用户对网站真正感兴趣,而不是垃圾邮件发送者。
  • 在这种情况下,正如介绍所解释的那样,这是不可能的。对不起;)
  • 你为什么说“这已经被彻底讨论过了,正则表达式不应该被用作电子邮件验证器。”然后推荐一篇提出正则表达式的文章? (而且还不是最好的。) - 你也意识到 FILTER_VALIDATE_EMAIL 实际上是基于什么的?
  • @yes123 仔细阅读这篇文章,它不鼓励使用正则表达式,而倾向于使用更复杂的方法。
  • @rikudo?你在说什么?标题为“Listing 2. A Better Example from ILoveJackDaniel's”的部分仍然使用 ereg
【解决方案2】:

您可以做的其中一件事是通过 WHOIS 查找或 ping 检查域是否有效。如果有人输入 john@doe.com,您尝试 whois 查找 doe.com 并 ping 该域。如果域不存在,则电子邮件无效。

还要求输入两次电子邮件对我来说很好 - 人们不再在电子邮件中犯拼写错误。

还必须通过正则表达式对电子邮件进行良好的验证。

【讨论】:

  • 通过正则表达式验证是必须的。
  • 好吧,我认为 php 没有任何内置功能可以实现这一点,但我喜欢你的想法。如果您能分享一些有关如何做的事情,那将非常有帮助。
  • 我发布了我的答案。看看吧。
  • @Rikudo Sennin 您引用的文章最终还是会检查正则表达式。而且总体上并不完全正确。
  • @user882440 对于 php ping 示例,您可以在这里查看:codediesel.com/php/ping-a-server-using-php Whois 稍微复杂一些,但有很多可用于 php 的库。
【解决方案3】:

这是我最常看到的从最简单到最准确的列表。

  • Regex - 检查并确保它是有效的电子邮件格式。为此,我在 Stack Overflow 上看到了一些很好的代码 sn-ps - 免费且简单,但不能确定电子邮件甚至域是否确实存在。

  • 检查域是否有 MX-Server - 比正则表达式更准确,因为至少实时检查域 - 免费且实施起来相当简单,但无法确定用户是否存在。

  • 使用商业解决方案 - 最准确(验证实际电子邮件地址是否有效并且可以接受消息),易于实施(REST/SOAP),但不是免费的

希望这会有所帮助。

【讨论】:

    猜你喜欢
    • 2012-09-01
    • 2015-10-21
    • 1970-01-01
    • 2019-05-02
    • 2016-11-18
    • 2014-04-15
    • 2017-02-03
    • 2011-10-18
    • 1970-01-01
    相关资源
    最近更新 更多