邮箱地址校验方法探究
SaaS应用在用户注册账号时,需要发送验证码验证用户账号邮箱正确。但如果用户输入的邮箱不正确,需要
自己手动开发
也是校验邮箱地址有效性的基本原理
- 校验邮箱格式
- 校验DNS
- 校验SMTP服务器响应
使用Python第三方库验证
from validate_email import validate_email_or_fail
import logging, sys
logging.basicConfig(stream=sys.stderr, level=logging.DEBUG);
def validate_email_address(email_addr: str):
is_valid = validate_email_or_fail(
email_address=email_addr,
check_format=True,
check_blacklist=True,
check_dns=True,
dns_timeout=10,
check_smtp=True,
smtp_timeout=10,
smtp_skip_tls=False,
smtp_tls_context=None,
smtp_debug=False,
)
return is_valid
def test_validate():
test_email_addr = 'your-name@example.com'
res = validate_email_address(test_email_addr)
print(res)
if __name__ == '__main__':
test_validate()
以上方法仅仅提供非常基础的校验,不同邮件服务商对于该检查机制并不总适用,因此实际适配工作量比较大,且需要及时跟随邮件供应商更改策略。
如果要在生产环境中使用,第三方服务是更具性价比的选择。
使用第三方服务(免费试用+付费)
选型方法:
找出发送失败的邮件,根据不同失败原因分类,在每种分类中采样3-5个邮箱地址,测试第三方服务能否检测成功。
https://app.abstractapi.com/ -- 性价比还不错,未测出明显短板
https://www.zerobounce.net/
https://emaillistvalidation.com/
https://www.usebouncer.com/
https://app.emailable.com/ -- 无法感知目标邮箱空间不足
https://hunter.io/ -- 目标邮箱空间不足时报错,但不知道具体原因