3

メールアドレスのドメイン部分を正確に検証するにはどうすればよいですか? 最初に Java クラスの既存のドメインをリストする必要がありますか? それとも JavaInternetAddress.validate()がデフォルトで実行しますか? 私はこれを使用しました:

public static boolean verifyEmailAddress(String regEmail) {
    boolean result = true;
    try {
        InternetAddress emailAddr = new InternetAddress(regEmail);
        emailAddr.validate();
    } catch (AddressException ex) {
        result = false;
    }
    return result;
}

request.getParameter には電子メール アドレスがあり、regEmail に保存されます。問題は、有効であると表示されているような無効な電子メールの場合でもsan@hhhgggmail.comあります。正確に何をする必要がありますか?.助けてください..また、この関数はそれらに対して正常に機能していますか誰がそれを使用してテストしましたか?

4

5 に答える 5

3

あなたは間違った視点から問題に取り組んでいると思います。アプリケーションの観点からは、メールを受信できる場合、メールは有効(より良い、有用) であると見なされます。そのため、これらすべてのフォーラムがアクティベーション メールを送信し続けます :) すべての新しいメール アドレスにランダムな文字列を送信し、ユーザーがシークレットを読んだことを証明できるまで隔離状態に保つ必要があります。

これは、ドメインが存在する可能性があるか、そのドメインの MX レコードでさえ DNS に存在する可能性があるためですが、これらの条件のいずれも、アドレスが有効であることを保証できないためです。繰り返しますが、何かを検証すると、後で使用できると実際に述べていることになります。何らかの目的のためにコードで、メールアドレスの目的はメールを受信することです

于 2012-04-07T21:30:09.190 に答える
1

ドメイン部分でInetAddres.getByNameを使用してみませんか?

于 2012-04-07T05:48:22.350 に答える
1

Javaに自動的な方法があるかどうかはわかりません。しかし、ドメインの MX レコードを検索します。MX レコードが存在する場合、ドメインはメールを受信できる可能性があります。

詳しくはこちらのページもご覧ください。

于 2012-04-07T05:40:34.723 に答える
0

それを検証するための正確に効果的な方法はないと思います。私たちにできることは、パターンを確認すること、または hhhgggmail.com などのメール ドメインを確認することだけです。しかし、「san@hhhgggmail.com が存在する」ことをどのように確認できますか?

SMTP にはコマンド 'VEFY' がありますが、ほとんどすべての smtp サーバーはセキュリティ上の理由からこのコマンドを実装していません。

ああ、あなたはドメインを確認したい。すべての smtp サーバーには mx dns レコードが必要です。dnsjava モジュールを使用して検証できます。コード:</p>

public static MXRecord digOptimalMxRecords(String domainName) throws TextParseException {
        List<MXRecord> records = DNSHelper.digMxRecords(domainName);
        if (CollectionUtils.isNotEmpty(records)) {
            Collections.sort(records, new Comparator<MXRecord>() {
                @Override
                public int compare(MXRecord o1, MXRecord o2) {
                    return o2.getPriority() - o1.getPriority();
                }
            });
            return records.get(0);
        }
        return null;
    }

public static List<MXRecord> digMxRecords(String domainName) throws TextParseException {
    List<MXRecord> list = new ArrayList<MXRecord>();
    Lookup mxLookupper = new Lookup(domainName, Type.MX);
    mxLookupper.run();
    if (mxLookupper.getResult() == Lookup.SUCCESSFUL) {
        Record[] answers = mxLookupper.getAnswers();
        for (Record record : answers) {
            list.add((MXRecord) record);
        }
    }
    return list;
}
于 2012-04-09T03:27:27.403 に答える