質問

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

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

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

  1. 非email文字列 'foo@!'を提供しました

  2. 存在しないメールアドレスを提供しました 'thisdoesnotexistignsdfkjsdf@gmail.com' '

結果:

ケース1を実行してコードが入りました catch block したがって、予想されるHTMLページにエラーメッセージを出力します。

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

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

私の推測では、SendeMailResult ObjectのIssuccess()は、存在しないメールアドレスチェックについて実際に責任を負いません。電子メールが起動された場合にのみ気になりますか?

電子メールアカウントが存在しない場合にログする方法はありますか。

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();
}
役に立ちましたか?

解決

電子メール(SMTP)はストアとフォワードプロトコルであり、送信時には、宛先のメールアドレスが存在しないことを知ることはできません。メッセージが実際に最終的な宛先サーバーに届くと、それを見つけることができます。

他のヒント

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

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

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top