Sending emails with template using apex in Salesforce.

Techno Sree
1 min readMar 5, 2019

--

Following steps help with implementation email notification feature in apex using the predefined templates.

Create a new template:

  1. Go to Setup-> search ‘template’ -> choose ‘Classic Email Templates’-> click on ‘New Template’ button.
  2. Select Visualforce option for ‘type of email template’.
  3. Enter template name, keep the other defaults. For this example we use ‘Test Account Alert Email’.
  4. Enter Email Subject text.
  5. Chose Recipient Type Object, for this example we choose Contact object.
  6. Chose ‘Related To Type’ as Account object for this example.
  7. Save.
  8. Choose ‘Edit Template’ button to change the content of the email body. We could use the merge fields in the content and in subject.

Apex logic to send email using above created template:

public static void sendLeadOverlapCompleteNotification(Overlap__c overlap){   Messaging.SingleEmailMessage message = new        Messaging.SingleEmailMessage();   message.setTargetObjectId(contact.id); 
message.setSenderDisplayName(‘Company Support’);
message.setReplyTo(‘no-reply@company.com’);
message.setUseSignature(false);
message.setBccSender(false);
message.setSaveAsActivity(false);
EmailTemplate emailTemplate = [Select Id,Subject,Description,HtmlValue,DeveloperName,Body from EmailTemplate where name = ‘Test Account Alert Email’]; message.setTemplateID(emailTemplate.Id);
message.setWhatId(account.Id); //This is important for the merge fields in template to work
message.toAddresses = new String[] { contact.email};
Messaging.SingleEmailMessage[] messages = new List<Messaging.SingleEmailMessage> {message}; Messaging.SendEmailResult[] results = Messaging.sendEmail(messages);

if (results[0].success)
{
System.debug(‘The email was sent successfully.’);
} else {
System.debug(‘The email failed to send: ‘ + results[0].errors[0].message);
}
}

The above should work as of Salesforce ‘Spring 19’ version.

--

--