Created
July 26, 2018 09:25
-
-
Save SalesforceBobLightning/e79eedb1e047d38583ce149a9a832ff8 to your computer and use it in GitHub Desktop.
Simple InvocableMethod for Sending Email using Email Template Developer Name via Process Builder
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
public class SimpleEmailAction { | |
@InvocableMethod( | |
label='Simple Email Action' | |
) | |
public static List<Result> sendEmails(List<Request> requests) { | |
List<Result> results = new List<Result>(); | |
for(Request request : requests){ | |
results.add(sendEmail(request)); | |
} | |
return results; | |
} | |
public static Result sendEmail(Request request) { | |
Messaging.SingleEmailMessage mail = new Messaging.SingleEmailMessage(); | |
if (String.isNotBlank(request.emailTemplateId)){ | |
mail.setTemplateId(request.emailTemplateId); | |
} else if (String.isNotBlank(request.emailTemplateDeveloperName)){ | |
mail.setTemplateId(getEmailTemplateId(request.emailTemplateDeveloperName)); | |
} | |
if (String.isNotBlank(request.whatId)){ | |
mail.setWhatId(request.whatId); | |
} | |
if (String.isNotBlank(request.targetObjectId)){ | |
mail.setTargetObjectId(request.targetObjectId); | |
} | |
mail.setSaveAsActivity(true); | |
mail.setOptOutPolicy('FILTER'); | |
Messaging.SingleEmailMessage[] messages = new List<Messaging.SingleEmailMessage>(); | |
messages.add(mail); | |
Messaging.SendEmailResult[] results = Messaging.sendEmail(messages); | |
Result sendResult = new Result(); | |
for(Messaging.SendEmailResult result :results) { | |
sendResult.isSuccess = result.IsSuccess(); | |
if(!result.IsSuccess()) break; | |
} | |
return sendResult; | |
} | |
private static Id getEmailTemplateId(String emailTemplateDeveloperName) { | |
List<EmailTemplate> emailTemplates = [SELECT Id FROM EmailTemplate WHERE DeveloperName = :emailTemplateDeveloperName]; | |
if (emailTemplates.size() > 0){ | |
return emailTemplates[0].Id; | |
} | |
return null; | |
} | |
public class Result { | |
@InvocableVariable | |
public Boolean isSuccess; | |
@InvocableVariable | |
public String errorMessage; | |
} | |
public class Request { | |
@InvocableVariable( | |
label = 'Email Template ID' | |
description = 'ID of the email template to use.' | |
required=false | |
) | |
public Id emailTemplateId; | |
@InvocableVariable( | |
label = 'Email Template DeveloperName' | |
description = 'Developer Name of the email template to use.' | |
required=false | |
) | |
public String emailTemplateDeveloperName; | |
@InvocableVariable( | |
label = 'Who ID' | |
required=true | |
) | |
public Id targetObjectId; | |
@InvocableVariable( | |
label = 'What ID' | |
required=true | |
) | |
public Id whatId; | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment