こんにちは、アンダーソンです。
今回はApexでメールテンプレートを使って送信する方法についてまとめています。
案件ですることがあったのですが、
メールを普通に送ることはあってもテンプレートを使ったことが今までなかったので、
調べながらやりました。
それをまとめておりますので是非参考になればと思います。
メールテンプレートって?
ご存知かとは思いますが、メールテンプレートとはあらかじめSalesforce内で
設定しておいたメールの内容をテンプレとして使える機能です。
メールテンプレートには4種類あり、
- テキスト
- HTML (Classic レターヘッドを使用する)
- カスタム HTML
- Visualforce
このうちVisualforceは一括メール送信には設定できないので気をつけましょう。
Apexでのメール送信
Apexからメール送信する方法は
- 単一のメールメッセージ
- メールメッセージの一括メール送信
の二つです。
どちらもMessaging名前空間のクラスとしてありますので
用途に応じて使い分けましょう。
メール送信にテンプレートを使用する
ではテンプレートをメール送信を組み合わせて
定型的なメールを送信する方法です。
まずメールテンプレートのIdを取得します。
SELECT Id, Name, FolderName, FolderId FROM EmailTemplate

次に取得したテンプレートのIdをメッセージのテンプレートIdにセットします。
Messaging.MassEmailMessage mail = new Messaging.MassEmailMessage();
mail.setTemplateId(tempId);
mail.setTargetObjectIds(contactIds);
Messaging.SendEmail(new List<Messaging.MassEmailMessage>{mail});
で、ここで知らなかったんですが、メールテンプレートは差込項目を使って動的に
メールの内容を変更できる優れものなんですが、({!Contact.Name}みたいなの)
メールクラスを使った送信では、取引先責任者、リード、ユーザ以外の差込項目は使えないので注意です。
テンプレートを使用する場合はsetTargetObjectIds(シングルの場合はsetTargetObjectId)
を使い上記3つのIDを指定してあげます。
そうすることで差込項目の値を使うことができます。
メールテンプレートを使ってユーザに通知するなど様々な方法が取れますが、
メールテンプレートを使えば簡単に通知内容を変更することができますので、
Apexでも実装の際にそういったことを考えておくといいですね。