LoginSignup
5
3

More than 3 years have passed since last update.

Lightning メールテンプレート + Apex でメール自由送信

Last updated at Posted at 2020-07-22

背景

・送信機能自動化
・複数オブジェクトから情報を抽出して送信情報を作成する
・あるレコードの関連ファイルをメールに添付して送信したい

1.Lightning メールテンプレート作成

image.png

2.Apex実装

/**
 * parameter:
 *   ・取引先責任者:contactId
 *   ・contentDocumentId:関連ファイル
 */
Messaging.SingleEmailMessage mail = new Messaging.SingleEmailMessage();

// 「メール:組織のアドレス」に登録したメールアドレスを取得
ID orgWideEmailAddressId = [SELECT Address FROM OrgWideEmailAddress WHERE DisplayName = 'XXXXXX' LIMIT 1].Id;

// 送信元設定
mail.setOrgWideEmailAddressId(orgWideEmailAddressId);

// 送信先設定(取引先責任者から取得する)
Contact contactInfo = [SELECT Id, Name, Account.Name FROM Contact WHERE Id=:contactId];
mail.setTargetObjectId(contactInfo.Id);

// メールの添付ファイルを設定
ContentVersion cVer = [SELECT Title, FileExtension, FileType, VersionData FROM ContentVersion WHERE ContentDocumentId = :contentDocumentId AND IsLatest = true];
List<Messaging.Emailfileattachment> fas = new List<Messaging.Emailfileattachment>();
Messaging.Emailfileattachment fa = new Messaging.Emailfileattachment();
fa.setFileName(cVer.Title + '.' + cVer.FileExtension);
fa.setBody(cVer.VersionData);
fas.add(fa);
mail.setFileAttachments(fas);

// メールテンプレートからメール送信内容を設定する
EmailTemplate et = [SELECT Id, Subject, Body, HtmlValue FROM EmailTemplate WHERE name = 'XXXXXX'];
et.Subject=et.Subject.replace('#Subject#', 'Subject詳細内容');
et.HtmlValue=et.HtmlValue.replace('#ContactName#', 'お客様の名前');
et.HtmlValue=et.HtmlValue.replace('#FileName#', cVer.Title);
mail.setSubject(et.Subject);
mail.setHtmlBody(et.HtmlValue);

// 送信
try {
    Messaging.sendEmail(new List<Messaging.SingleEmailMessage> { mail }, true);
} catch (Exception e) {
    ApexPages.addMessage(new ApexPages.Message(ApexPages.Severity.ERROR, 'メール送信失敗しました。'));
    return ;
}
5
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
3