SendEmailResult

The sendEmail() call returns a list of SendEmailResult objects. Each SendEmailResult object has the following properties:

Name Type Description
success boolean If sending single email: Indicates whether the email was successfully accepted for delivery by the message transfer agent (true) or not (false). Even if success = true, it does not mean the intended recipients received the email, as it could have bounced or been blocked by a spam blocker. Also, even if the email is successfully accepted for delivery by the message transfer agent, there can still be errors in the error array related to individual addresses within the email.

If sending mass email: Indicates whether the email was successfully added to the queue for processing (true) or not (false). Even if the email was added to the queue, there can still be processing errors that prevent delivery to the intended recipients.

SendEmailError Error[] If an error occurred during the sendEmail() call, a list of SendEmailError objects is returned. For single email, errors indicate that Salesforce wasn't able to deliver the email. For mass email, errors indicate that the email wasn't added to the queue for processing.

SendEmailError

SendEmailError can have the following attributes:

Name Type Description
Fields Field[] Reserved for future use. Array of one or more field names. Identifies which fields in the object, if any, affected the error condition.
Message string Error message text.
StatusCode statusCode A code that characterizes the error. The full list of status codes is available in the WSDL file for your organization.
TargetObjectId ID The object ID of the target for which the error occurred.

If an error occurs that prevents sendEmail() from sending the email to one or more targets, each TargetObjectId for those targets has an associated error in SendEmailResult. A TargetObjectId that does not have an associated error in SendEmailResult indicates the email was sent to the target. If SendEmailResult has an error that does not have an associated TargetObjectId, no email was sent.

Note

The following is an example of how to parse through a resulting set for errors:
Messaging.SingleEmailMessage email = new Messaging.SingleEmailMessage();
email.setToAddresses(new String[] { 'admin@acme.com' });
email.setSubject('my subject');
email.setPlainTextBody('plain text body');
List<Messaging.SendEmailResult> results = 
    Messaging.sendEmail(new Messaging.Email[] { email });
if (!results.get(0).isSuccess()) {
    System.StatusCode statusCode = results.get(0).getErrors()[0].getStatusCode();
    String errorMessage = results.get(0).getErrors()[0].getMessage();
}