我已经使用 SMTP 命令来“检查/验证”电子邮件地址(无论它是否实际存在)。但问题是它有时接受电子邮件作为有效的电子邮件地址,有时不接受。
验证电子邮件是否是 SMTP 服务器的限制(出于安全目的)?如果是这样,那么我有什么替代方法?
如上所述,大多数电子邮件服务器都关闭了 VRFY 命令,因为它很容易从垃圾邮件发送者那里收集电子邮件。
有几个用于验证电子邮件地址的选项
1) 使用电子邮件验证链接。这可能会导致转换率下降,因为如果您发送的验证电子邮件过多而退回,则可能会给您的电子邮件发件人(您或会抱怨您的 ESP)带来麻烦。如果您有任何可传递性问题,这些链接最终会出现在垃圾邮件/批量文件夹中,并且永远不会被点击。如果您关心转换和/或支持票,我不是这种方法的忠实拥护者。如果您有兴趣,我不久前对此进行了一些研究并写了一篇博客文章:http: //blog.strikeiron.com/bid/54483/Email-Verification-Links-Kill-Your-Conversion-Rate
2) 使用付费工具。这些有 3 种风格 a) 实时 API - 有提供付费解决方案的公司(完全披露,我的公司是该领域的公司之一)能够以高 (>95%) 的准确性实时验证电子邮件。b) 数据库查找供应商 - 这是另一个付费选项,将收集的电子邮件与数据库进行比较。通常较便宜,但不如 PC 的实时工具 c) 准确 - 避免这种情况。它们不准确,会将您的 IP 地址列入黑名单。
3) 快速检查(正则表达式、检查 MX 服务器等)并接受模棱两可的电子邮件为有效。根据您的数量和受众,这可能是一个不错的选择。
希望这可以帮助。
贾斯汀
最好的方法是得到用户的确认。使用用户名创建一个随机数,在创建时使用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");
?>