2

私は電子メールの検証チェックに取り組んでおり、user@localhost と user@example (.anything に注意) を有効な電子メール アドレスとして検証できるようにするかどうかを決定する必要があります。これは、Web 全体とイントラネットの両方で多数のユース ケースを持つオープン ソース プロジェクト用です。

RFC 2822 (Internet Message Format Standard) では許可されていますが、RFC 2821 (SMTP Standard) では失敗するはずです。

考え?

4

6 に答える 6

1

アプリケーションによって異なります。あなたのユーザーの何人かが @localhost という電子メールを持っていると思うなら、気にしないでください。それからそれのために行きます。

于 2008-09-17T14:22:18.457 に答える
1

構成可能なオプションにして、ユーザーが自分で決定できるようにします。個人的には、誰かに有効な user@localhost タイプのアドレスを使用させたケース(イントラネットまたはパブリックインターネット)にまだ遭遇していないため、デフォルトで失敗します。

于 2008-09-17T14:22:21.360 に答える
1

私はそれを無効にします。内部ドメインを使用している組織はほとんどなく、一般的に「acme.localhost」や「intranet.com」などを使用している組織はほとんどありません。彼らがそれを機能させるために使用するDNSで、ある種の構成が行われています。

いずれにせよ、社内メールはほとんど死んでいます。インスタント メッセージング、Twitter、SMS の出現に加えて、会社のすべてのメンバーが外部メールを利用できるようになったため、TLD のないドメインを取得することはほとんどありません。メールで。

それが必要な人は、いつでも自分で正規表現を微調整できます。彼らは、内部電子メールを処理するためにカスタム ホスト名をセットアップするのに十分な知識を持っていたからです。

于 2009-11-15T21:30:09.367 に答える
0

これを見ると、詳細な 2 つの簡単なチェックが必要なようです。

<?php 
function valid_email($email) { 
    // First, we check that there's one @ symbol, and that the lengths are right 
    if (!ereg("^[^@]{1,64}@[^@]{1,255}$", $email)) { 
     // Email invalid because wrong number of characters in one section, or wrong number of @ symbols.
     return false; 
    }

    // take a given email address and split it into the username and domain. 
    list($userName, $mailDomain) = split("@", $email); 
    if (checkdnsrr($mailDomain, "MX")) { 
        // this is a valid email domain! 
        return true;
    } 
    else { 
        // this email domain doesn't exist!
        return false;
    }
} 
?>

(ソース 1ソース 2 )

于 2008-09-17T16:57:17.680 に答える
0

内部で DNS が機能している場合は、いつでも DNS ルックアップを実行できます。

ただし、これが SMTP で失敗する場合は、それを含めないようにすることをお勧めします。

于 2008-09-17T14:22:33.793 に答える
0

user@localhost という形式の電子メール アドレスを見たことがあります。これは通常、メーリング リストのアーカイブと管理者がホストし、同じマシンから投稿したものを見たときに見られます。したがって、間違いなく発生する可能性があります-そして、それが私の解析ルーチンを壊したことを認めます! だから今、私は電子メールアドレスにもう少し柔軟です.

于 2008-09-17T14:24:29.873 に答える