Developer

Apexでメールテンプレートを使った送信の仕方【Salesforce】

Developer
この記事は約3分で読めます。

こんにちは、アンダーソンです。
今回は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でも実装の際にそういったことを考えておくといいですね。

その他の開発に関する記事はこちらです。

Developerも含めた試験問題にチャレンジしてみましょう。