コンテンツへスキップ
🛠️ToolsShed

メールアドレス検証ツール

単一または複数のメールアドレスのフォーマットを検証します。

このツールについて

メールアドレスバリデーターは、メールアドレスが正しいフォーマット規則に従っているかを確認する必要がある人にとって不可欠なツールです。サインアップフォームの構築、連絡先リストのクリーンアップ、またはメールが正しく構造化されているかの確認など、このバリデーターは標準的なメールフォーマット規則を使用してアドレスが構文的に有効であることを確認します。メール検証により、タイプミスを防ぎ、通信の試みがメールサーバーによって不正な形式のため自動的に拒否されないようにします。

このツールの使い方は簡単です。単一のメールアドレスまたは複数のアドレス(1行に1つまたはカンマ区切り)を入力フィールドに貼り付けて、検証をクリックします。ツールは各アドレスを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.