Pular para o conteúdo
🛠️ToolsShed

Validador de Endereço de E-mail

Valida o formato de um ou vários endereços de e-mail.

Sobre esta ferramenta

Um validador de endereço de e-mail é uma ferramenta essencial para qualquer pessoa que precise verificar se os endereços de e-mail seguem as regras de formato adequadas. Esteja você criando um formulário de inscrição, limpando uma lista de contatos ou simplesmente verificando se um e-mail está estruturado corretamente, este validador usa regras padrão de formato de e-mail para confirmar que os endereços são sintaticamente válidos. A validação de e-mail ajuda a prevenir erros de digitação e garante que as tentativas de comunicação não sejam rejeitadas automaticamente pelos servidores de correio devido a endereços malformados.

Usar esta ferramenta é simples: cole um endereço de e-mail único ou vários endereços (um por linha ou separados por vírgula) no campo de entrada e clique em validar. A ferramenta verifica cada endereço contra os padrões RFC 5322 e as regras comuns de formato de e-mail, informando quais endereços são válidos e quais contêm erros. Os casos de uso típicos incluem verificar listas de e-mail de clientes antes de enviar boletins informativos, validar entrada do usuário em formulários de registro e verificar bancos de dados de contatos em busca de problemas de formatação antes da integração do sistema.

Este validador é particularmente útil para administradores de dados, desenvolvedores que integram verificação de e-mail em aplicações e empresas que mantêm listas de e-mail. Observe que esta ferramenta verifica apenas o formato de um endereço de e-mail—ela não verifica se o endereço realmente existe ou está ativo no momento. Para validação de e-mail abrangente, você ainda pode precisar combinar isso com e-mails de confirmação ou verificações SMTP em sistemas de produção.

Perguntas Frequentes

Implementação de Código

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.