Skip to content

Instantly share code, notes, and snippets.

@SalesforceBobLightning
Created July 26, 2018 09:25
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save SalesforceBobLightning/e79eedb1e047d38583ce149a9a832ff8 to your computer and use it in GitHub Desktop.
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
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