tyoshikawa1106のブログ

- Force.com Developer Blog -

SFDC:Messaging.sendEmailによるメール送信処理の送信失敗パターンテスト方法

Apexでメールを送信するために使用するMessaging.sendEmailの処理では処理結果を「isSuccess()」で判定することができます。この「isSuccess()」で送信失敗時の処理を実行するには、わざとエラーになるデータを使用する必要があります。


しかし、単純に送信先アドレスを@のない不正な形式で実行してもisSuccessの判定が実行される前にExceptionエラーとして扱われてしまいます。

f:id:tyoshikawa1106:20131210224113p:plain


どのようなデータを使用すればExceptionエラーにならずに送信失敗にできるのか調べてみたところ次のサイトが見つかりました。

email - Can I Force Messaging.sendEmail to not be Successful in a Unit Test - Salesforce Stack Exchange


このサイトによると "Messaging.sendEmail(new Messaging.Email[] { email }, false);" のように「false」をつけることでExceptionエラーにならずに「isSuccess()」のエラー処理で処理を実行できるようになるとのことです。


試しに次のような処理で確認してみたところ問題なくエラー時の処理が実行されることを確認できました。


f:id:tyoshikawa1106:20131210230731p:plain


SendEmail処理を実装する場合には、「false」をつけてExceptionエラーを発生させないようにしておくと良さそうです。