I have seen a ton of posts regarding this issue where we cant set an user as targetObjectId and an object as WhatId when we are using an Email Template. Then I came across some posts using Messaging.renderStoredEmailTemplate where we have a workaround to use running user as whoId and a Standard or Custom Object as WhatId.
I have to use a Lightning Email Template for this scenario based on certain requirements.
Here is my code, it doesn't produce any errors, but emails are not sent.
@AuraEnabled
public static void sendThankYouEmail2(Id caseId) {
//String[] recipients = new String[] { UserInfo.getUserEmail() };
EmailTemplate emailTemplate = [SELECT Id FROM EmailTemplate WHERE DeveloperName = 'Test_thank_you'];
Messaging.SingleEmailMessage thankYouMail = Messaging.renderStoredEmailTemplate(emailTemplate.Id, UserInfo.getUserId(), caseId);
thankYouMail.setSaveAsActivity(false);
Messaging.sendEmail(new Messaging.SingleEmailMessage[] { thankYouMail });
}
Update after adding recipients -
@AuraEnabled
public static void sendThankYouEmail2(Id caseId) {
String[] recipients = new String[] { UserInfo.getUserEmail() };
EmailTemplate emailTemplate = [SELECT Id FROM EmailTemplate WHERE DeveloperName = 'Test_thank_you'];
Messaging.SingleEmailMessage mail = new Messaging.SingleEmailMessage();
mail.setToAddresses(recipients);
Messaging.SingleEmailMessage rMail = Messaging.renderStoredEmailTemplate(emailTemplate.Id, null, caseId);
mail.setSaveAsActivity(false);
Messaging.sendEmail(new Messaging.SingleEmailMessage[] { mail });
}
renderStoredEmailTemplate()
sets the recipient. I think you should add the recipients addresses usingthankYouMail.setToAddresses(listOfAddresses);