邮箱地址校验方法探究
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/ -- 目标邮箱空间不足时报错,但不知道具体原因
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· .NET10 - 预览版1新功能体验(一)