2

I need to write a trigger that sends out an email notification whenever an account, lead, and contact is deleted. Also, what is the best test class to write in order to get 100% code coverage?

Here is the code:

trigger EmailAfterDelete on Account(after delete) {
    Messaging.reserveSingleEmailCapacity(trigger.size);
    List<Messaging.SingleEmailMessage> emails = new List<Messaging.SingleEmailMessage>();
    for (Account acct : Trigger.old) {
        Messaging.SingleEmailMessage email = new Messaging.SingleEmailMessage();
        email.setToAddresses(new String[] {'[email protected]'});
        email.setSubject('Deleted Account Alert');
        email.setPlainTextBody('This message is to alert you that the account named ' + acct.Name + ' has been deleted.');
        emails.add(email);
    }
    Messaging.sendEmail(emails);
}

Here is the error that I am getting every time I try to delete an account:

Validation Errors While Saving Record(s) There were custom validation error(s) encountered while saving the affected record(s). The first validation error encountered was "Apex trigger EmailAfterDelete caused an unexpected exception, contact your administrator: EmailAfterDelete: execution of AfterDelete caused by: System.NoAccessException: The organization is not permitted to send email: Trigger.EmailAfterDelete: line 2, column 1".

1
  • welcome to salesforce.stackexchange Matt. I've used the {} button in the editor to format the code in your question. Please try to keep questions specific to a single issue. Lets first focus on avoiding that error, we can worry about test classes later (there are many good resources around). Sep 15, 2014 at 19:52

1 Answer 1

7

For the error that you have encountered just set the access level of 'access to send emails' to 'all emails'.

Go to setup > administration setup > email administration > deliverability > set access level to all emails.

Update : for your second question i.e. to get 100% test coverage write a test class. Create a dummy test account in that test class and then delete that dummy test account. The trigger will fire after deletion of dummy test account and your trigger will be covered for test coverage.

1
  • 1
    Hi @Matt If this answer helps you, please mark the answer as the right one so we can close the question.
    – A-d
    Sep 15, 2014 at 20:33

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .