function readOnly(count){ }
Starting November 20, the site will be set to read-only. On December 4, 2023,
forum discussions will move to the Trailblazer Community.
+ Start a Discussion
Surgaya KhundrakpamSurgaya Khundrakpam 

Is there a way to use setTmplateId along with setHtmlBody ?

public with sharing class UtilityClass {
  
    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();
         
            mail.setSenderDisplayName('AnyoneHome');

            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><img border="0" src="https://c.cs16.content.force.com/servlet/servlet.ImageServer?id=015f00000001tbu&oid=00Df0000003bQgv" beditid="r1sp1" blabel="headerImage" id="r1sp1" alt="Header">'+plainBody+'<html>';
 
           // plainBody = '<html>'+plainBody+'<html>';
 
            htmlBody = htmlBody.replaceAll('<!\\[CDATA\\[', ''); // replace '<![CDATA['
             htmlBody= htmlBody.replaceAll('\\]\\]>', ''); // replace ']]'
        
            mail.setHtmlBody(htmlBody); 
            mail.setSaveAsActivity(false); 
            //mail.setPlainTextBody(plainBody); 
            mail.setTemplateID(emailTemplate.Id);   
            mail.settargetObjectId(UserInfo.getUserId());  
         
            listSingleEmailMessages.add(mail);        
        }
         listEmailResult = Messaging.sendEmail(listSingleEmailMessages);
        
        return listSingleEmailMessages;
    }
}
Vishnu VaishnavVishnu Vaishnav
I have idea that u just first fetch mail template body using savepoint and after this merge your htmlbody and template html body..
It'll help.