验证电子邮件真实存在的最佳方法?有Python实现方案或相关服务吗
没有任何技术手段可以在不实际发送验证邮件的前提下100%确认一个邮箱真实有效,所有核验方案都只能给出概率性的结果,准确率受目标邮箱服务商的反垃圾策略限制
你可以自己写Python脚本完成基础的核验逻辑,步骤如下:
第一步:格式合规性校验
先过滤不符合RFC邮件格式规范、域名无效的邮箱,可使用第三方库email-validator实现,安装和示例代码如下:pip install email-validatorfrom email_validator import validate_email, EmailNotValidError def check_email_format(email: str) -> bool: try: # 同时校验格式和域名是否存在有效解析记录 validate_email(email, check_deliverability=True) return True except EmailNotValidError: return False你给出的示例中
asdasd@adasd.com的域名adasd.com没有有效邮件交换记录,这一步就会被判定为无效。第二步:SMTP握手探测
这是最接近真实核验的技术方案,逻辑是模拟邮件发送流程,连接目标域名的MX邮件服务器,发送RCPT TO:<目标邮箱>指令,根据服务器返回的状态码判断邮箱是否存在:返回250状态码表示邮箱存在,返回550表示邮箱不存在。
该方案的局限性非常明显:Gmail、谷歌企业邮箱、Outlook等主流服务商都有反探测策略,要么对所有探测请求都返回250状态码,要么直接封禁发起探测的IP,因此对这类域名的邮箱探测结果没有参考价值,频繁发起探测还会导致你的IP被加入反垃圾黑名单。
如果需要批量核验大量邮箱,可使用市面上专门的邮箱核验服务,这类服务的核验逻辑会结合多个维度:格式校验、MX记录校验、SMTP多IP轮询探测、全局无效邮箱库比对、catch-all域名识别、丢弃型临时邮箱库匹配等,整体准确率比自行开发的脚本高很多,对主流服务商邮箱的准确率普遍可以达到90%以上,但依然做不到100%准确。
如果你必须得到100%准确的结果,唯一的方案是向目标邮箱发送带验证标识的邮件,要求收件人点击确认链接或回复验证,只有得到收件端的主动反馈才能完全确认邮箱真实存在且处于可用状态。
内容的提问来源于stack exchange,提问作者Salman Khan

