メールを送信するコードを書きました。それはうまくいきますが、私の目標は次のとおりです。
誰かが存在しないメールアドレスに送信した場合、結果を「false」または「失敗」などとしてログに記録したい (メールアドレスが有効な場合は、「成功」とだけ言う)
以下のコードで2つのことを試しました。
電子メール以外の文字列「foo@!」が提供されました
存在しないメールアドレス「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();
}