发送邮件并验证实际的电子邮件?
我通过php发送用户激活链接,我只有一个正则表达式来检查电子邮件是否由*@*.*
组成,这很好,但我想检查电子邮件是否也实际发送。发送邮件并验证实际的电子邮件?
我试着用
if (mail(....)) {
// success
} else {
// error
}
做这个但是,当我进入[email protected]
电子邮件仍然通过对成功的一步去。
我怎样才能真正检查它是否是一个正确的电子邮件在PHP中,谢谢。
从PHP文档
布尔邮件(字符串$到,串$主题,串$消息[,字符串$ additional_headers [,字符串$ additional_parameters])
返回true邮件已成功接受发送,否则为FALSE 。
重要的是要注意,仅仅因为邮件被接受为 交付,它并不意味着邮件实际上会到达预期的 目的地。
只是因为电子邮件地址格式正确并不意味着在该位置有实际的邮箱。 PHP无法“检查”电子邮件地址是否存在/处于活动状态。这是激活链接的全部目的,以验证某人正在检查该电子邮件地址。
-
验证电子邮件
if (filter_var($email_a, FILTER_VALIDATE_EMAIL)) { echo "VALID"; }
preoperly地址的电子邮件服务器将返回true在接受电子邮件,它不知道它是否会得到用户要做到这一点的唯一途径,而我确信你已经看到它,是让收件人单击电子邮件中的链接,将它们发送回您的网站,然后您知道它的有效\使用地址。
+1 for filter_var()。使用它而不是一个简单的正则表达式。即使是最复杂的正则表达式也无法让所有可能的方式将一个RFC 5322兼容地址放在一起。你想出的东西几乎肯定会失败。
但是您并没有询问地址格式验证,您询问了有关检查邮件是否已发送的问题。激活链接的全部目的是验证电子邮件地址。如果您定期清理未经验证的帐户,则电子邮件地址结构是否正确无关紧要。通过发送链接,您可以进行全电路测试,绕过filter_var()可能存在的任何可能的格式错误解释。
cgwebprojects对不起,但你错了。我上面发布的内容是正确的。你现在要问一个完全不同的问题 “我只有一个正则表达式来检查电子邮件是否包含*@*.*,这很好,但我想检查电子邮件是否实际发送。” 您只问是否发送。你从未要求验证电子邮件。当然@Dagon是正确的检查一个有效的电子邮件,但你要求“但我想检查电子邮件实际上是否也发送” – JoshStrange 2011-12-19 19:20:02
我不同意,所有主要的在线电子邮件服务,其中一些使用PHP会告诉你该电子邮件地址在尝试发送时不是实际的电子邮件地址。 – cgwebprojects 2011-12-19 19:20:25
我在问上面的同样的问题,我如何验证实际的电子邮件,我的方法显然是错误的,但说php不能做到这一点只是简单的傻! – cgwebprojects 2011-12-19 19:21:28