基于 Rust 开发的 Python 邮件验证库,性能提升 1000 倍!

Rust开发笔记
Rust开发笔记
发布于 2024-08-21 / 19 阅读
1
0

基于 Rust 开发的 Python 邮件验证库,性能提升 1000 倍!

在当今互联网时代,电子邮件验证已成为 Web 应用不可或缺的一部分。然而,传统的 Python 邮件验证库效率低下,面对海量数据处理时显得力不从心。emval 横空出世,这款基于 Rust 开发的 Python 邮件验证库,性能较传统验证库提升了 100-1000 倍,为 Python 邮件验证领域带来了一场速度革命。

emval

emval 采用 Rust 语言编写,并通过 PyO3 绑定到 Python,在保证安全性的同时,充分发挥 Rust 语言的高性能优势。与 python-email-validatorverify-emailpyIsEmail 等传统 Python 验证库相比,emval 拥有以下显著优势:

  • 速度飞跃: 相比于 python-email-validator,emval 的验证速度提升了 100-1000 倍,尤其在处理大量邮件地址时优势更加明显。
  • 符合标准: 严格遵循 RFC 5322 和 RFC 6531 标准,确保验证结果准确可靠。
  • 国际化支持: 支持国际化域名 (IDN) 和本地部分,轻松处理包含 Unicode 字符的邮件地址。
  • 用户友好: 提供易于理解的语法错误信息,方便开发者快速定位问题。
  • 功能丰富: 支持地址规范化、无效 Unicode 字符拒绝等功能,提升邮件处理效率和安全性。

快速上手

使用 pip 安装 emval 库:

pip install emval

利用 validate_email 函数快速验证邮件地址:

from emval import validate_email

email = "[email protected]"

try:
    # 验证邮件地址
    val_email = validate_email(email)
    # 获取规范化后的邮件地址
    normalized_email = val_email.normalized
except Exception as e:
    # 处理验证错误
    print(str(e))

验证规则

通过 EmailValidator 类,开发者可以根据实际需求定制邮件验证规则:

from emval import EmailValidator

emval = EmailValidator(
    allow_smtputf8=False,
    allow_empty_local=True,
    allow_quoted_local=True,
    allow_domain_literal=True,
    deliverable_address=False,
)

email = "user@[192.168.1.1]"

try:
    validated_email = emval.validate_email(email)
    print(validated_email)
except Exception as e:
    print(str(e))

EmailValidator 类提供了以下配置选项:

  • allow_smtputf8: 是否允许国际化邮件地址。
  • allow_empty_local: 是否允许空本地部分,例如 @domain.com
  • allow_quoted_local: 是否允许带引号的本地部分,例如 "user name"@domain.com
  • allow_domain_literal: 是否允许域名字面量,例如 [192.168.0.1]
  • deliverable_address: 是否检查邮件地址是否可投递,通过验证域名的 MX 记录实现。

速度与安全

1. 邮件地址语法

emval 严格遵循 RFC 5322 和 RFC 6531 标准,支持 ASCII 和国际化字符,确保验证结果准确无误。

2. 国际化邮件地址

  • 域名: emval 将非 ASCII 域名转换为 ASCII "Punycode" 形式,确保与不支持 Unicode 的系统兼容。
  • 本地部分: 遵循 RFC 6531 标准,允许在本地部分使用国际化字符,并提供选项以处理不支持 SMTPUTF8 的环境。

3. 拒绝不安全的 Unicode 字符

emval 会拒绝不安全的 Unicode 字符,防止显示和解释问题,增强邮件处理安全性。

4. 地址规范化

emval 通过以下方式规范化邮件地址,确保数据一致性:

  • 域名小写: 将域名转换为小写形式。
  • Unicode NFC 规范化: 将字符转换为预组合形式。
  • 移除不必要的字符: 移除本地部分中多余的引号和反斜杠。

总结

emval 的出现,为 Python 邮件验证提供了高效、安全、便捷的解决方案。其卓越的性能优势和丰富的功能,使其成为处理海量邮件数据的理想选择。相信随着 emval 的不断发展,它将在 Python 邮件验证领域发挥越来越重要的作用。


评论