发送邮件和验证实际的电子邮件?

时间:2011-12-19 19:06:44

标签: php email

我通过php向用户发送激活链接,我只有一个正则表达式来检查电子邮件是否包含*@*.*,这很好,但我想检查电子邮件是否实际发送。< / p>

我尝试用

做到这一点
if (mail(....)) {
     // success
} else {
     // error
}

但是当我输入a@a.a的电子邮件时,它仍然会进入成功步骤。

如何在php中检查它是否是正确的电子邮件,谢谢。

3 个答案:

答案 0 :(得分:3)

  1. 使用

    预先验证电子邮件地址
     if (filter_var($email_a, FILTER_VALIDATE_EMAIL)) {
         echo "VALID";
     }
    
  2. 电子邮件服务器将在接受不知道的电子邮件时返回true,如果它将以唯一的方式到达用户,并且我确定您已经看到它,是为了让收件人点击电子邮件中的链接,将其发送回您的网站,然后您就知道其有效\已使用的地址。

答案 1 :(得分:2)

来自PHP文档

  

bool 邮件(字符串$ to,字符串$ subject,字符串$ message [,字符串$ additional_headers [,字符串$ additional_parameters]])

     

如果邮件成功接受传递,则返回TRUE,FALSE   否则。

     

重要的是要注意,因为邮件被接受了   交付,并不意味着邮件实际上会达到预期的目的   目的地。

仅仅因为电子邮件地址格式正确并不意味着该位置存在实际邮箱。 PHP无法“检查”电子邮件地址是否存在/处于活动状态。这是激活链接的全部目的,用于验证是否有人正在检查该电子邮件地址。

答案 2 :(得分:0)

filter_var()的

+1。使用它而不是简单的正则表达式。即使是最复杂的正则表达式也无法通过一种可能的方式来组合RFC 5322兼容的地址。你尝试提出某些东西几乎可以保证失败。

但是您没有询问地址格式验证,您询问是否检查邮件是否已发送。激活链接的全部目的是验证电子邮件地址。如果您定期清理未经验证的帐户,则电子邮件地址的结构是否正确无关紧要。通过发送链接,您正在进行全电路测试,绕过filter_var()可能具有的任何可能的格式错误解释。