I'm experiencing the following error in our Production instance:
Error: Invalid Data. Review all error messages below to correct your data. Apex trigger AcctMlstnUpdt caused an unexpected exception, contact your administrator: AcctMlstnUpdt: execution of AfterUpdate caused by: System.EmailException: SendEmail failed. First exception on row 0; first error: INVALID_CROSS_REFERENCE_KEY, invalid cross reference id: []: Trigger.AcctMlstnUpdt: line 23, column 1
The trigger works fine and has 100% code coverage in the Sandbox - Trigger & test class is as follows:
trigger AcctMlstnUpdt on Account (after insert, after update) {
for (Account acct : Trigger.New) { String[] toAddresses = new String[] {acct.Lead_Email__c}; Messaging.SingleEmailMessage mail = new Messaging.SingleEmailMessage(); mail.setTargetObjectId(acct.OwnerID); mail.setToAddresses(toAddresses); mail.setSenderDisplayName('Home Captain Realty Update'); mail.setUseSignature(false); mail.setBccSender(true); mail.setSaveAsActivity(false); if(acct.Milestones__c == 'In Contract, pre-mortgage') { mail.setTemplateId('00X18000000M2zL'); Messaging.SendEmailResult [] r = Messaging.sendEmail(new Messaging.SingleEmailMessage[] {mail}); } if(acct.Milestones__c == 'In Contract, Mortgage Commitment Received') { mail.setTemplateId('00X18000000M2zQ'); Messaging.SendEmailResult [] r = Messaging.sendEmail(new Messaging.SingleEmailMessage[] {mail}); } if(acct.Milestones__c == 'Closed/Archived') { mail.setTemplateId('00X18000000M2zV'); Messaging.SendEmailResult [] r = Messaging.sendEmail(new Messaging.SingleEmailMessage[] {mail}); } } }
@isTest private class TestAcctMlstnUpdt {
public TestMethod static void CallAcctMlstnUpdt() { Account myAcct = new Account(); myAcct.Name = 'Test_Account'; myAcct.Lead_First_Name__c = 'John'; myAcct.Lead_Last_Name__c = 'Doe'; myAcct.Lead_Email__c = '[email protected]'; try { insert myAcct; } catch (Exception ex) { System.debug('A DML error has occurred in TestAcctMlstUpdt: ' + ex.getMessage()); return; } System.assertEquals('Test_Account', myAcct.Name); System.assertEquals('John', myAcct.Lead_First_Name__c); System.assertEquals('Doe', myAcct.Lead_Last_Name__c); System.assertEquals('[email protected]', myAcct.Lead_Email__c); myAcct.Milestones__c = 'In Contract, pre-mortgage'; try { update myAcct; } catch (Exception ex) { System.debug('A DML error has occurred in TestAcctMlstUpdt: ' + ex.getMessage()); return; } System.assertEquals('In Contract, pre-mortgage', myAcct.Milestones__c); myAcct.Milestones__c = 'In Contract, Mortgage Commitment Received'; update myAcct; System.assertEquals('In Contract, Mortgage Commitment Received', myAcct.Milestones__c); myAcct.Milestones__c = 'Closed/Archived'; update myAcct; System.assertEquals('Closed/Archived', myAcct.Milestones__c); } }