Валидатор Email-адресов
Проверяет формат одного или нескольких email-адресов.
Об этом инструменте
Валидатор адреса электронной почты — это необходимый инструмент для всех, кому нужно проверить, что адреса электронной почты соответствуют правильным правилам форматирования. Независимо от того, создаёте ли вы форму регистрации, очищаете список контактов или просто проверяете, правильно ли структурирован адрес электронной почты, этот валидатор использует стандартные правила формата электронной почты для подтверждения синтаксической корректности адреса. Проверка электронной почты помогает предотвратить опечатки и гарантирует, что попытки связи не будут автоматически отклонены почтовыми серверами из-за неправильно сформированных адресов.
Использование этого инструмента просто: вставьте один адрес электронной почты или несколько адресов (по одному в строке или через запятую) в поле ввода и нажмите кнопку валидации. Инструмент проверяет каждый адрес по стандартам 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.