1

メールを送信するコードを書きました。それはうまくいきますが、私の目標は次のとおりです。

誰かが存在しないメールアドレスに送信した場合、結果を「false」または「失敗」などとしてログに記録したい (メールアドレスが有効な場合は、「成功」とだけ言う)

以下のコードで2つのことを試しました。

  1. 電子メール以外の文字列「foo@!」が提供されました

  2. 存在しないメールアドレス「thisdoesnotexistignsdfkjsdf@gmail.com」が提供されました

結果:

ケース 1 を実行すると、コードが実行さcatch blockれ、予期される HTML ページにエラー メッセージが出力されます。

ケース 2 を実行すると、コードが返されました'ok sent!'

そして数分後、配信に失敗したというメールを受け取りました。

私の推測では、SendEmailResult オブジェクトの isSuccess() は、存在しない電子メール アドレスのチェックに対して実際には責任を負いません。メールが発射されたかどうかだけを気にしますか???

メールアカウントが存在しない場合にログを記録して、Apex コードでそのような機会を記録できる方法はありますか?

try {
    Messaging.SendEmailResult[] resultMail = Messaging.sendEmail(new
            Messaging.SingleEmailMessage[] { mail });

    resultMail[0].getErrors();

    //display success or error message
    if (resultMail[0].isSuccess()) {
        response = 'ok sent!';
    } else {
        response = resultMail[0].getErrors().get(0).getMessage();
    }

    //log
    boolean isSuccess = resultMail[0].isSuccess();
    Integer out = EmailLogger.logEmailSent(this, isSuccess);
} catch (System.EmailException ex) {
    system.debug('============== email exception caught!!!=============');
    response = ex.getMessage();
}
4

2 に答える 2

4

電子メール (SMTP) はストア アンド フォワード プロトコルです。送信時に、送信先の電子メール アドレスが存在しないことを知ることはできません。メッセージが実際に最終的な送信先サーバーに到達して初めて、そのことがわかります。

于 2010-11-16T03:46:27.747 に答える
1

メールアドレスが実際に存在するかどうかに関係なく見つける方法があった場合、スパマーはブルートフォース攻撃を試みた可能性があります-メールの可能なすべての組み合わせを試し、無限のスパムを送信します:)

神に感謝します、それは不可能です。

于 2011-01-05T13:25:55.210 に答える