I have the following error when trying to send an email.
System.EmailException: SendEmail failed. First exception on row 0; first >error: UNKNOWN_EXCEPTION, List has no rows for assignment to SObject: []
List<User> users = [SELECT Name, Email, Id FROM User WHERE Recipient__c = TRUE and isActive = TRUE];
EmailTemplate et = [SELECT id FROM EmailTemplate WHERE DeveloperName='Advisor'];
for(User u : users) {
Messaging.SingleEmailMessage mail = new Messaging.SingleEmailMessage();
mail.setTargetObjectId(u.Id);
mail.setSenderDisplayName('Salesforce');
mail.setUseSignature(false);
mail.setBccSender(false);
mail.setSaveAsActivity(false);
mail.setTemplateId(et.id);
Messaging.SendEmailResult[] r = Messaging.sendEmail(new Messaging.SingleEmailMessage[] {mail});
}
The list users contains at least one record and the Emailtemplate
is not null.
This is the result of the mail system debug:
(Messaging.SingleEmailMessage[
getBccAddresses=null;
getCcAddresses=null;
getCharset=null;
getEntityAttachments=null;
getFileAttachments=null;
getHtmlBody=null;
getInReplyTo=null;
getOptOutPolicy=SEND;
getOrgWideEmailAddressId=null;
getPlainTextBody=null;
getReferences=null;
getTargetObjectId=005D0XXXXXXXXXuIAE;
getTemplateId=00XD0XXXXXXXXcbMAA;
getToAddresses=null;
getWhatId=null;
isTreatBodiesAsTemplate=false;
isTreatTargetObjectAsRecipient=true;
isUserMail=true; ])
Best Answer
You code is passing empty list.
This is the correct code.
Main change is at this line:
Messaging.SendEmailResult[] r = Messaging.sendEmail(mails);
And kept that out of
for
loop.For more information, refer sendEmail()