You need to sign in to do that
Don't have an account?
Error sending Email template to user
I have the following Trigger:
trigger send_notification on Inquery__c (after update) {
Inquery__c inquery = trigger.new[0];
if (Trigger.isUpdate) {
if(inquery.Quilification__c == 'Qualified') {
}
if(inquery.Quilification__c == 'Disqualified') {
Messaging.SingleEmailMessage mail = new Messaging.SingleEmailMessage();
EmailTemplate et=[Select id from EmailTemplate where name=:'Ineligible_course_candidate'];
mail.setTemplateId(et.id);
mail.setTargetObjectId(inquery.email__c);
mail.setSenderDisplayName('Salesforce Support');
Messaging.sendEmail(new Messaging.SingleEmailMessage[] { mail });
}
}
}
Im getting the following error:
Error:Apex trigger send_notification caused an unexpected exception, contact your administrator: send_notification: execution of AfterUpdate caused by: System.QueryException: List has no rows for assignment to SObject: Trigger.send_notification: line 15, column 1
for the following line:
EmailTemplate et=[Select id from EmailTemplate where name=:'Ineligible_course_candidate'];
Anyone know why?
Thanks
Say, if you want to send the email to the record owner then you can replace the following line
mail.setTargetObjectId(record.ID);
with
mail.setTargetObjectId(inquery .OwnerId);
All Answers
I am assuming you have the email template name Ineligible_course_candidate. If so try replacing the name field with DeveloperName as follows:
Replace the following line
EmailTemplate et=[Select id from EmailTemplate where name=:'Ineligible_course_candidate'];
with
EmailTemplate et=[Select id from EmailTemplate where DeveloperName= 'Ineligible_course_candidate'];
Yes that did work,
But now im getting the following error:
Error:Apex trigger send_notification caused an unexpected exception, contact your administrator: send_notification: execution of AfterUpdate caused by: System.EmailException: SendEmail failed. First exception on row 0; first error: REQUIRED_FIELD_MISSING, Missing targetObjectId with template: []: Trigger.send_notification: line 21, column 1
It seems i have to include mail.setTargetObjectId,
so i changed the code to:
trigger send_notification on Inquery__c (after update) {
public List<Inquery__c > u {get;set;}
Inquery__c inquery = trigger.new[0];
if (Trigger.isUpdate) {
if(inquery.Quilification__c == 'Qualified') {
}
if(inquery.Quilification__c == 'Disqualified') {
u = new List<Inquery__c >();
u = [select ID from Inquery__c where email__c=:inquery.email__c ];
Inquery__c record = u[0];
Messaging.SingleEmailMessage mail = new Messaging.SingleEmailMessage();
EmailTemplate et=[Select id from EmailTemplate where DeveloperName=:'Ineligible_course_candidate'];
mail.setTemplateId(et.id);
mail.setTargetObjectId(record.ID);
mail.setSenderDisplayName('Salesforce Support');
Messaging.sendEmail(new Messaging.SingleEmailMessage[] { mail });
}
}
}
But now im getting the following error:
Error:Apex trigger send_notification caused an unexpected exception, contact your administrator: send_notification: execution of AfterUpdate caused by: System.EmailException: SendEmail failed. First exception on row 0; first error: INVALID_TYPE_FOR_OPERATION, Only Users, Contact or Lead allowed for targetObjectId : a08J0000003Fbbf.: []: Trigger.send_notification: line 23, column 1
for the following line:
Messaging.sendEmail(new Messaging.SingleEmailMessage[] { mail });
But i dont have the user in my contact or lead,
What should i do instead?
Thanks,
Say, if you want to send the email to the record owner then you can replace the following line
mail.setTargetObjectId(record.ID);
with
mail.setTargetObjectId(inquery .OwnerId);