Php 我可以检查电子邮件地址是否有效吗?

Php 我可以检查电子邮件地址是否有效吗?,php,Php,如何实现以下逻辑 用户使用电子邮件地址注册 如果提供的电子邮件地址是有效的 电子邮件地址,然后是用户帐户 激活 或者,如果它是一封伪造的电子邮件,那么用户 帐户未激活 我怀疑我能否捕捉到“发送失败的回复消息”,对吗? 无论如何,您建议如何实现上述逻辑 顺便说一句,我必须找到一种方法,不管客户如何想要它=)您可能不仅要确保电子邮件地址是有效的,而且要确保它属于这个特定的用户。通常的方法是发送带有链接的电子邮件。用户必须单击链接才能激活帐户 例如,链接可能如下所示: http://example

如何实现以下逻辑

  • 用户使用电子邮件地址注册

  • 如果提供的电子邮件地址是有效的 电子邮件地址,然后是用户帐户 激活

  • 或者,如果它是一封伪造的电子邮件,那么用户 帐户未激活

我怀疑我能否捕捉到“发送失败的回复消息”,对吗? 无论如何,您建议如何实现上述逻辑


顺便说一句,我必须找到一种方法,不管客户如何想要它=)

您可能不仅要确保电子邮件地址是有效的,而且要确保它属于这个特定的用户。通常的方法是发送带有链接的电子邮件。用户必须单击链接才能激活帐户

例如,链接可能如下所示:

http://example.com/activate?token=bc59fb46c9a0a25346889e5ab336f11c
其中,
标记是您生成并存储在数据库中的随机字符串,链接到该帐户。
激活
页面后面的服务器端代码将激活该帐户。如果您在一周内没有获得此
令牌的点击率,您可以清理帐户和激活令牌


在回复您的评论时添加…

另一种方法是启动SMTP连接,然后尝试开始发送电子邮件。这与邮件服务器类似。例如(
是脚本可能发送的):

<220 example.com ESMTP后缀
>ehlofoobar.com
<250行
>邮寄地址:noreply@foobar.com
<250行
>RCPT至:johndoe@example.com
<550收件人地址被拒绝:本地收件人表中的用户未知
>退出
<221再见
这种方法有几个严重的问题,这就是为什么它没有在实践中使用。其中大多数会导致错误接受消息,有些会导致检查完全失败:

  • 如果您的站点位于防火墙后面,该防火墙禁止在端口25(SMTP)和445(SSMTP)上进行传出连接,则您甚至无法连接到远程服务器
  • 此技术不会告诉您地址是否输入错误,而是导致另一个有效地址。例如,在
    hotmail.com
    ,几乎所有你能想象到的地址都会被占用
  • 如果邮件服务器关闭或无法访问,则帐户创建将失败
  • 如果邮件服务器配置为接受无效地址的邮件,则将接受任何地址
  • 如果邮件服务器不是最终收件人,而只是中继主机,则会接受任何地址
  • 如果您过于频繁地探测邮件服务器,它可能会将您列入黑名单
  • 您的站点可能被恶意人员或bot滥用,以攻击邮件服务器。(发送完整验证电子邮件时也是如此。在这两种情况下都使用验证码。)

另见和。我希望这个列表足够长,可以让您的客户相信他的问题没有好的解决方案,他应该停止向您询问不可能的事情。

您可能不仅要确保电子邮件地址有效,而且要确保它属于此特定用户。通常的方法是发送带有链接的电子邮件。用户必须单击链接才能激活帐户

例如,链接可能如下所示:

http://example.com/activate?token=bc59fb46c9a0a25346889e5ab336f11c
其中,
标记是您生成并存储在数据库中的随机字符串,链接到该帐户。
激活
页面后面的服务器端代码将激活该帐户。如果您在一周内没有获得此
令牌的点击率,您可以清理帐户和激活令牌


在回复您的评论时添加…

另一种方法是启动SMTP连接,然后尝试开始发送电子邮件。这与邮件服务器类似。例如(
是脚本可能发送的):

<220 example.com ESMTP后缀
>ehlofoobar.com
<250行
>邮寄地址:noreply@foobar.com
<250行
>RCPT至:johndoe@example.com
<550收件人地址被拒绝:本地收件人表中的用户未知
>退出
<221再见
这种方法有几个严重的问题,这就是为什么它没有在实践中使用。其中大多数会导致错误接受消息,有些会导致检查完全失败:

  • 如果您的站点位于防火墙后面,该防火墙禁止在端口25(SMTP)和445(SSMTP)上进行传出连接,则您甚至无法连接到远程服务器
  • 此技术不会告诉您地址是否输入错误,而是导致另一个有效地址。例如,在
    hotmail.com
    ,几乎所有你能想象到的地址都会被占用
  • 如果邮件服务器关闭或无法访问,则帐户创建将失败
  • 如果邮件服务器配置为接受无效地址的邮件,则将接受任何地址
  • 如果邮件服务器不是最终收件人,而只是中继主机,则会接受任何地址
  • 如果您过于频繁地探测邮件服务器,它可能会将您列入黑名单
  • 您的站点可能被恶意人员或bot滥用,以攻击邮件服务器。(发送完整验证电子邮件时也是如此。在这两种情况下都使用验证码。)

另见和。我希望这个列表足够长,可以让你的客户相信他的问题没有好的解决方案,他应该停止向你询问不可能的事情。

这里有一个服务,它将验证电子邮件地址,但不确定这是否是你感兴趣的预定路线。

这是一项服务,它将验证电子邮件地址,但不确定您是否对该地址感兴趣。
为什么不实施一个验证系统呢。他们创建了一个帐户。给他们发一封带有验证号的电子邮件。他们点击电子邮件中的链接,然后浏览该数据库并
if (checkdnsrr("comcast.net")) 
{ 
echo 'Email valid!'
return true;
}
else
{
echo 'Email invalid!';
return false;
}