我使用SMTP命令“检查/验证”电子邮件地址(无论它是否确实存在)。但问题是它有时接受电子邮件作为有效的电子邮件地址,有时则不接受。
验证电子邮件时,它是SMTP服务器的限制(出于安全目的)吗?如果是这样,那么我有哪些替代方法?
答案 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");
?>