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
Steve Berley [Left Propeller]Steve Berley [Left Propeller] 

sending email from apex (in LEX) not populating Classic Email Template

I'm sending emails generated in Apex from Lightning.  The emails are sending but they're coming through without an email body, despite a classic email template being set.
 
EmailTemplate template = [Select id, subject from EmailTemplate where name = 'My Template' limit 1];
...
Messaging.SingleEmailMessage msg = new Messaging.SingleEmailMessage();
msg.setTemplateId(template.Id);   // <<--- look
...
system.debug(Messaging.sendEmail(emails,false) );

The SendEmailResult generated by the system.debug shows...
15:34:51:342 USER_DEBUG [35]|DEBUG|Messaging.SingleEmailMessage[
getBccAddresses=null;
getCcAddresses=null;
getCharset=null;
getEntityAttachments=null;
getFileAttachments=null;
getHtmlBody=null;
getInReplyTo=null;
getOptOutPolicy=SEND;
getOrgWideEmailAddressId=0D20U0000008P2cSAE;
getPlainTextBody=null;
getReferences=null;
getTargetObjectId=0030U00000eXdLNQA0;
getTemplateId=00Xf4000000h8eaEAA;    // <<--- look
getToAddresses=null;
getWhatId=null;
isTreatBodiesAsTemplate=false;
isTreatTargetObjectAsRecipient=true;
isUserMail=false;
]

getTemplateId is showing the correct id for the Classic Email Template.

So -- all is perfect, except the template isn't coming through in the email.

What am I missing?

Thanks,

Steve 
 
Harsh P.Harsh P.
Hi Steve,
 
Can you share your code to get find it quickly.
Steve Berley [Left Propeller]Steve Berley [Left Propeller]
Here's the code...
 
public static void sendReminderEmails(list<contact> people){
		id sender = getSender();   // <== works perfectly
		EmailTemplate template = getTemplate();   // <== works perfectly
		if (sender == null || template == null) return;

		List<Messaging.SingleEmailMessage> emails = new List<Messaging.SingleEmailMessage>();

		for (contact p : people){
			if (p.email == null || p.email == '') continue;  // skip records w/o and email address
			string subject = subjString(p);

			Messaging.SingleEmailMessage msg = new Messaging.SingleEmailMessage();
		 	msg.setOrgWideEmailAddressId(sender);
			msg.setTemplateId(template.Id);
			msg.setTargetObjectId(p.id);
			msg.setSaveAsActivity(true);
			msg.setSubject('Your ' + subject);
			emails.add(msg);  
		}

		try {
			// Messaging.sendEmail(emails,false);
			system.debug(Messaging.sendEmail(emails,false) );
		} catch (Exception e) {
			lpTools.LogError('DriverRelatedReminders_handler.sendEmails - sending emails', e);
		}
	}

 
Harsh P.Harsh P.
Hi Steve,

Update your code as below:
public static void sendReminderEmails(list<contact> people){
		id sender = getSender();   // <== works perfectly
		EmailTemplate template = getTemplate();   // <== works perfectly
		if (sender == null || template == null) return;

		List<Messaging.SingleEmailMessage> emails = new List<Messaging.SingleEmailMessage>();

		for (contact p : people){
			if (p.email == null || p.email == '') continue;  // skip records w/o and email address
			string subject = subjString(p);

			Messaging.SingleEmailMessage msg = new Messaging.SingleEmailMessage();
		 	msg.setOrgWideEmailAddressId(sender);
			msg.setTemplateId(template.Id);
			msg.setTargetObjectId(p.id);
			msg.setSaveAsActivity(true);
			msg.setSubject('Your ' + subject);
			emails.add(msg);  
		}

		try {
				Messaging.SendEmailResult[] results = Messaging.sendEmail(emails);
                System.debug('Sent To-->'+results );
			    system.debug(Messaging.sendEmail(emails,false) );
		} catch (Exception e) {
			    lpTools.LogError('DriverRelatedReminders_handler.sendEmails - sending emails', e);
		}
	}

Regards,
Harsh P.
 
Harsh P.Harsh P.
Hi Steve,

Update your code as below:
public static void sendReminderEmails(list<contact> people){
		id sender = getSender();   // <== works perfectly
		EmailTemplate template = getTemplate();   // <== works perfectly
		if (sender == null || template == null) return;

		List<Messaging.SingleEmailMessage> emails = new List<Messaging.SingleEmailMessage>();

		for (contact p : people){
			if (p.email == null || p.email == '') continue;  // skip records w/o and email address
			string subject = subjString(p);

			Messaging.SingleEmailMessage msg = new Messaging.SingleEmailMessage();
		 	msg.setOrgWideEmailAddressId(sender);
			msg.setTemplateId(template.Id);
			msg.setTargetObjectId(p.id);
			msg.setSaveAsActivity(true);
			msg.setSubject('Your ' + subject);
			emails.add(msg);  
		}

		try {
				Messaging.SendEmailResult[] results = Messaging.sendEmail(emails);
                       system.debug('Sent To->'+results  );
			system.debug(Messaging.sendEmail(emails,false) );
		} catch (Exception e) {
			lpTools.LogError('DriverRelatedReminders_handler.sendEmails - sending emails', e);
		}
	}

Regards,
Harsh P.​​​​​​​
Steve Berley [Left Propeller]Steve Berley [Left Propeller]
The results of your change are 
15:34:51:342 USER_DEBUG [35]|DEBUG|Messaging.SingleEmailMessage[
getBccAddresses=null;
getCcAddresses=null;
getCharset=null;
getEntityAttachments=null;
getFileAttachments=null;
getHtmlBody=null;
getInReplyTo=null;
getOptOutPolicy=SEND;
getOrgWideEmailAddressId=0D20U0000008P2cSAE;    // <<--- correct
getPlainTextBody=null;
getReferences=null;
getTargetObjectId=0030U00000eXdLNQA0;    // <<--- correct
getTemplateId=00Xf4000000h8eaEAA;    // <<--- correct
getToAddresses=null;
getWhatId=null;
isTreatBodiesAsTemplate=false;
isTreatTargetObjectAsRecipient=true;
isUserMail=false;
]