Sunday, 20 December 2015

How to Handle Email Exceptions in Apex






try {
//number of emails to send
    Integer NUMBER_OF_EMAILS = 2;
    List<Messaging.SendEmailResult> results;
    List<Messaging.SingleEmailMessage> messages;
  
    contact obj= [select id from contact where Id='0039000001i0RpeAAE'];
    }
    Messaging.reserveSingleEmailCapacity(NUMBER_OF_EMAILS); // Do not use this if  use are using userinfo.getuserID()
  
    for (Integer i=0;i<NUMBER_OF_EMAILS;i++){
    //below says how many send email calls you have made  per transaction
    System.debug('You have made ' + Limits.getEmailInvocations() + ' email calls out of ' + Limits.getLimitEmailInvocations() + ' allowed');
    //1) generate and send emails
    messages= new List<Messaging.SingleEmailMessage>();
    List<String> emailaddress= new List<String>();
    emailaddress.add('nithinch@gmail.com');
    Messaging.SingleEmailMessage email = new Messaging.SingleEmailMessage();
    email.setTargetObjectId(obj.Id);
    //email.setToAddresses(emailaddress);
    email.setSubject('Test : ' + 0);
    email.setPlainTextBody('test');
    email.saveAsActivity = false;
    messages.add(email);
  
    emailaddress= new List<String>();
    emailaddress.add('nithinch50@gmail.com@uk');
    email = new Messaging.SingleEmailMessage();
    email.setTargetObjectId(obj.Id);
    //email.setToAddresses(emailaddress);
    email.setSubject('Test : ' + 1);
    email.setPlainTextBody('test');
    email.saveAsActivity = false;
    messages.add(email);
  
    results = Messaging.sendEmail(messages,false); //false means if any one fails other mails will be sent

  
//2) print the results
for (Messaging.SendEmailResult result : results)
{
if (!result.isSuccess()) {
    System.StatusCode statusCode = result.getErrors()[0].getStatusCode();
    String errorMessage = result.getErrors()[0].getMessage();
    Id TargetObjectId=result.getErrors()[0].getTargetObjectId();
    System.debug('errorMessage : statusCode->' + statusCode + ' errorMessage-> ' + errorMessage +' TargetObjectId->'+TargetObjectId);
    }
else
{
 System.debug('The email was sent successfully');
}
}
System.debug('You have made ' + Limits.getEmailInvocations() + ' email calls out of ' + Limits.getLimitEmailInvocations() + ' allowed');
}
//https://developer.salesforce.com/docs/atlas.en-us.api.meta/api/sforce_api_calls_sendemail.htm
catch (Emailexception e) {

 system.debug('*****exception****'+e.getmessage());
 
}
    catch (Exception e )
    {
    // From Winter '14, this code is now executed.
    System.debug('You have used up your daily allowance of mails');
    }

No comments:

Post a Comment