PHP电子邮件验证

时间:2012-10-13 11:18:26

标签: php smtp

我使用SMTP命令“检查/验证”电子邮件地址(无论它是否确实存在)。但问题是它有时接受电子邮件作为有效的电子邮件地址,有时则不接受。

验证电子邮件时,它是SMTP服务器的限制(出于安全目的)吗?如果是这样,那么我有哪些替代方法?

2 个答案:

答案 0 :(得分:2)

如上所述,大多数电子邮件服务器都会关闭VRFY命令,因为它很容易从垃圾邮件发送者收集电子邮件。

验证电子邮件地址有几个选项

1)使用电子邮件验证链接。这可能会导致转化率下降,因为如果您发送过多的退回验证电子邮件,可能会导致您的电子邮件发件人(您或正在向您投诉的ESP)遇到麻烦。如果您有任何可传递性问题,链接将最终出现在spam / bulk文件夹中,永远不会被点击。如果您关心转换和/或支持票,我不是这种方法的忠实粉丝。我对此做了一些研究,如果你有兴趣,可以写一篇博客文章:http://blog.strikeiron.com/bid/54483/Email-Verification-Links-Kill-Your-Conversion-Rate

2)使用付费工具。这些有3种口味   a)实时API - 有些公司(完全披露,我的是这个领域的公司之一)提供付费解决方案能够以高(> 95%)的准确度实时验证电子邮件。    b)数据库查找供应商 - 这是另一个付费选项,其中收集的电子邮件与数据库进行比较。通常较便宜,但不如实时准确   c)适用于PC的工具 - 避免这种情况。它们不准确,会将您的IP地址列入黑名单。

3)快速检查(正则表达式,检查MX服务器等)并接受含糊不清的电子邮件作为有效邮件。根据您的音量和观众,这可能是一个不错的选择。

希望这有帮助。

贾斯汀

答案 1 :(得分:1)

最好的方法是获得用户的确认。使用mt_rand()创建一个包含用户名称的随机数,并在创建时将其存储在数据库中。将标记activated保留为0

使用激活密钥发送一封邮件,该密钥是存储在数据库中的随机数。可能的方式很小:

<?php
    $random = mt_rand(1, 1000);
    $random = $username . $random;
    # Store the $random in the DB.

    # Now send a mail
    mail($userEmail, "Confirm", "Your Unique ID is $random");
?>