【Salesforce】INVALID_SAVE_AS_ACTIVITY_FLAG, saveAsActivity must be false when sending mail to users.: [saveAsActivity, true]

【Salesforce】INVALID_SAVE_AS_ACTIVITY_FLAG, saveAsActivity must be false when sending mail to users.: [saveAsActivity, true]

Apexでメールを送信した際に、エラーが発生しました。

INVALID_SAVE_AS_ACTIVITY_FLAG, saveAsActivity must be false when sending mail to users.: [saveAsActivity, true]

ユーザにメールを送信する場合は活動の保存をfalseに設定してね、とのことです。

SingleEmailMessageのスーパークラスであるEmailクラスにはsetSaveAsActivityというメソッドが存在し、メールの送信を活動に保存するかを指定できます。

デフォルトではtrueになっているんですね。

https://developer.salesforce.com/docs/atlas.ja-jp.212.0.apexcode.meta/apexcode/apex_classes_email_outbound_base.htm#apex_classes_email_outbound_base

今回は送信先をsetTargetObjectIdメソッドでユーザのIDを指定しました。

メール送信の際にsetSaveAsActivity(false)としてやれば解決です。

Messaging.SingleEmailMessage email;

// メールを作成する
email = new Messaging.SingleEmailMessage();
// 宛先(ユーザ)を指定する
email.setTargetObjectId('005d0000001UfHp');
// 件名
email.setSubject('test');
// メールBody
email.setPlainTextBody('plainTextBody');
// 活動に保存しない
email.setSaveAsActivity(false);

// メールを送信する
Messaging.sendEmail(new Messaging.Email[] { email } , opt_allOrNone);

デフォルトでtrueになっているのには理由があるんでしょうかね。

No comments.

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です