跳到内容
🛠️ToolsShed

电子邮件地址验证器

验证单个或多个电子邮件地址的格式合规性。

关于此工具

电子邮件地址验证器是任何需要验证电子邮件地址是否遵循正确格式规则的人的必备工具。无论您是在构建注册表单、清理联系人列表,还是简单地检查电子邮件是否结构正确,此验证器都会使用标准电子邮件格式规则来确认地址在语法上是否有效。电子邮件验证有助于防止打字错误,并确保通信尝试不会因地址格式错误而被邮件服务器自动拒绝。

使用此工具非常简单:将单个电子邮件地址或多个地址(每行一个或用逗号分隔)粘贴到输入字段中,然后单击验证。该工具根据RFC 5322标准和常见电子邮件格式规则检查每个地址,报告哪些地址有效,哪些地址包含错误。典型的使用案例包括在发送新闻通讯前验证客户电子邮件列表、验证注册表单中的用户输入,以及检查联系人数据库中的格式问题以便进行系统集成。

此验证器对于数据管理员、将电子邮件验证集成到应用程序的开发者以及维护电子邮件列表的企业特别有用。请注意,此工具只检查电子邮件地址的格式——它不验证该地址是否实际存在或当前处于活动状态。为了进行全面的电子邮件验证,在生产系统中,您可能需要将其与确认电子邮件或SMTP检查相结合。

常见问题

代码实现

import re
import dns.resolver  # pip install dnspython

def validate_email_format(email: str) -> bool:
    """Validate email format using RFC 5321/5322 rules."""
    pattern = r'^[a-zA-Z0-9._%+\-]+@[a-zA-Z0-9.\-]+\.[a-zA-Z]{2,}$'
    if not re.match(pattern, email):
        return False
    local, domain = email.rsplit('@', 1)
    if len(email) > 254 or len(local) > 64:
        return False
    if '..' in email or email.startswith('.') or email.endswith('.'):
        return False
    return True

def check_mx_record(domain: str) -> bool:
    """Check if domain has MX records (can receive email)."""
    try:
        answers = dns.resolver.resolve(domain, 'MX')
        return len(answers) > 0
    except Exception:
        return False

def validate_email(email: str, check_mx: bool = False) -> dict:
    result = {
        "email": email,
        "format_valid": validate_email_format(email),
        "mx_valid": None,
    }
    if result["format_valid"] and check_mx:
        domain = email.split('@')[1]
        result["mx_valid"] = check_mx_record(domain)
    return result

# Usage
emails = ["user@example.com", "invalid@", "test..user@domain.com"]
for email in emails:
    print(validate_email(email))

Comments & Feedback

Comments are powered by Giscus. Sign in with GitHub to leave a comment.