mailUtils.cls
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 mailUtils { | |
public class mailUtilsException extends exception {} | |
public Boolean useSig {get; private set;} | |
public Boolean saveActivity {get; private set;} | |
public String senderDisplayName {get; private set;} | |
public mailUtils(Boolean useSig, Boolean saveActivity, String senderDisplayName){ | |
this.useSig = usesig; | |
this.saveActivity = saveActivity; | |
this.senderDisplayName = senderDisplayName; | |
} | |
// Derived from: | |
// http://salesforce.stackexchange.com/questions/13/using-apex-to-assemble-html-letterhead-emails/8745#8745 | |
public Messaging.SingleEmailMessage MergeTemplateWithoutSending(Id targetObjectId, Id templateId) { | |
Messaging.reserveSingleEmailCapacity(1); | |
Messaging.SingleEmailMessage mail = new Messaging.SingleEmailMessage(); | |
// Intentionally set a bogus email address. | |
String[] toAddresses = new String[]{'invalid@emailaddr.es'}; | |
mail.setToAddresses(toAddresses); | |
mail.setUseSignature(this.useSig); | |
mail.setSaveAsActivity(this.saveActivity); | |
mail.setSenderDisplayName(this.senderDisplayName); | |
mail.setTargetObjectId(targetObjectId); | |
mail.setTemplateId(templateId); | |
// create a save point | |
Savepoint sp = Database.setSavepoint(); | |
// Force the merge of the template. | |
Messaging.sendEmail(new Messaging.SingleEmailMessage[] {mail}); | |
// Force a rollback, and cancel mail send. | |
Database.rollback(sp); | |
// Return the mail object | |
// You can access the merged template, subject, etc. via: | |
// String mailTextBody = mail.getPlainTextBody(); | |
// String mailHtmlBody = mail.getHTMLBody(); | |
// String mailSubject = mail.getSubject(); | |
return mail; | |
} | |
public static Map<String,String> getMergedTemplateForObjectWithoutSending(Id targetObjectId, Id templateId, Boolean useSig, Boolean saveActivity, String senderDisplayName) { | |
Map<String,String> returnValue = new Map<String,String>(); | |
mailUtils mu = new mailUtils(useSig, saveActivity, senderDisplayName); | |
Messaging.SingleEmailMessage mail = mu.MergeTemplateWithoutSending(targetObjectId, templateId); | |
returnValue.put('textBody', mail.getPlainTextBody()); | |
returnValue.put('htmlBody', mail.getHTMLBody()); | |
returnValue.put('subject', mail.getSubject()); | |
return returnValue; | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment