邮箱地址校验方法探究

SaaS应用在用户注册账号时,需要发送验证码验证用户账号邮箱正确。但如果用户输入的邮箱不正确,需要

自己手动开发

也是校验邮箱地址有效性的基本原理

  1. 校验邮箱格式
  2. 校验DNS
  3. 校验SMTP服务器响应

https://stackoverflow.com/questions/69412522/what-is-the-best-way-to-verify-an-email-address-if-it-actually-exist

使用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/ -- 目标邮箱空间不足时报错,但不知道具体原因

posted @ 2024-05-16 02:02  LexLuc  阅读(11)  评论(0编辑  收藏  举报