Salesforce recently stopped creating email activity records for emails which failed because they bounce.
Below is the error I am getting:
SendEmail failed. First exception on row 0; first error: EMAIL_ADDRESS_BOUNCED, The target object email address is currently marked as bounced.: [targetObjectId, ...]
When I use the below code:
public static Messaging.SendEmailResult sendEmail(Id whatId, Id emailTemplateId, String emailTemplateDeveloperName, String orgWideEmailId, Id targetObjectId, String emailAddress, Boolean saveActivity) {
Messaging.SingleEmailMessage mail = new Messaging.SingleEmailMessage();
if (String.isNotBlank(emailTemplateId)){
mail.setTemplateId(emailTemplateId);
} else if (String.isNotBlank(emailTemplateDeveloperName)){
mail.setTemplateId(getEmailTemplateId(emailTemplateDeveloperName));
}
if (String.isNotBlank(whatId)){
mail.setWhatId(whatId);
}
if (String.isNotBlank(targetObjectId)){
mail.setTargetObjectId(targetObjectId);
} else if (String.isNotBlank(emailAddress)) {
mail.setToAddresses(new String[] {emailAddress});
}
if (String.isNotBlank(orgWideEmailId)){
mail.setOrgWideEmailAddressId(orgWideEmailId);
}
mail.setSaveAsActivity(saveActivity);
mail.setOptOutPolicy('FILTER');
Messaging.SingleEmailMessage[] messages = new List<Messaging.SingleEmailMessage>();
messages.add(mail);
Messaging.SendEmailResult[] results = Messaging.sendEmail(messages);
handleEmailResults(results);
return results[0];
}
private static void handleEmailResults(Messaging.SendEmailResult[] results) {
for(Messaging.SendEmailResult result :results) {
if(!result.IsSuccess()) {
List<Messaging.SendEmailError> errors = result.getErrors();
if (errors.size() > 0){
Messaging.SendEmailError err = errors[0];
System.debug(err.getMessage());
}
}
}
}
I've doubled checked, and setSaveAsActivity
is definitely being set to true
Question
- Why aren't the email activities being created?
- What can I do to fix it?