Email scheduler unable to include the letterhead template while sending emails through scheduler. The header and footer not displayed on emails recieved. Only the dynamic htmlValues can be seen in the emails recieved. Checked all the settings of header logo. checked Available for external use, Kept the images in shared folders in Document and externally available as well. Still it didn't work.
How can I include a letter head in the template for sending emails through scheduled jobs?
Below is my sendEmail function in utilityClass which send multiple emails :
public static List < Messaging.Singleemailmessage > sendEmail(List < EmailMessageWrapper > listEmailMessageWrapper, String emailTemplateName) {
List < Messaging.SendEmailResult > listEmailResult = null;
List < Messaging.Singleemailmessage > listSingleEmailMessages = new List < Messaging.Singleemailmessage > ();
EmailTemplate emailTemplate = [Select Id, BrandTemplateId, Subject, HtmlValue, Body, IsActive from EmailTemplate where developerName = : emailTemplateName
AND IsActive = TRUE
];
System.debug(emailTemplate);
for (EmailMessageWrapper emailMessageWrapper: listEmailMessageWrapper) {
Messaging.SingleEmailMessage mail = new Messaging.SingleEmailMessage();
if (emailMessageWrapper.FromAddress != null && emailMessageWrapper.FromAddress.length() > 0)
mail.setReplyTo(emailMessageWrapper.FromAddress);
if (emailMessageWrapper.ToAddress != null && emailMessageWrapper.ToAddress.length() > 0)
mail.setToAddresses(new String[] {
emailMessageWrapper.ToAddress
});
else
mail.setTargetObjectId(emailMessageWrapper.ToAddressId);
if (emailMessageWrapper.BccAddress != null && emailMessageWrapper.BccAddress.length() > 0)
mail.setBccAddresses(new String[] {
emailMessageWrapper.BccAddress
});
String subject = null;
if (emailMessageWrapper.Subject != null && emailMessageWrapper.Subject.length() > 0) {
mail.setSubject(emailMessageWrapper.Subject);
subject = emailMessageWrapper.Subject;
} else
subject = emailTemplate.Subject;
for (String key: emailMessageWrapper.ParameterSubjectMap.keySet())
subject = subject.replace(key, (emailMessageWrapper.ParameterSubjectMap.get(key) == null ? '' : emailMessageWrapper.ParameterSubjectMap.get(key)));
mail.setSubject(subject);
String htmlBody = emailTemplate.HtmlValue;
String plainBody = emailTemplate.Body;
for (String key: emailMessageWrapper.ParameterBodyMap.keySet()) {
htmlBody = htmlBody.replace(key, (emailMessageWrapper.ParameterBodyMap.get(key) == null) ? '' : emailMessageWrapper.ParameterBodyMap.get(key));
plainBody = plainBody.replace(key, (emailMessageWrapper.ParameterBodyMap.get(key) == null) ? '' : emailMessageWrapper.ParameterBodyMap.get(key));
}
plainBody = '<html>' + plainBody + '<html>';
htmlBody = htmlBody.replaceAll('<!\\[CDATA\\[', ''); // replace '<![CDATA['
htmlBody = htmlBody.replaceAll('\\]\\]>', ''); // replace ']]'
mail.setHtmlBody(htmlBody);
mail.setSaveAsActivity(false);
mail.setPlainTextBody(plainBody);
listSingleEmailMessages.add(mail);
}
listEmailResult = Messaging.sendEmail(listSingleEmailMessages);
return listSingleEmailMessages;
}