function readOnly(count){ }
Starting November 20, the site will be set to read-only. On December 4, 2023,
forum discussions will move to the Trailblazer Community.
+ Start a Discussion
Jack123Jack123 

SINGLE_EMAIL_LIMIT_EXCEEDED error

I get the single email limit exceeded error very frequently.

I am calling the apex class from process builder and I am getting this error.

can anyone help me what can be the issue.

 

This is my class code which i am calling from process builder.

public class sendEmailWithSignatureHandler{
    
    public static String orgWideId;
    public static List<Messaging.SingleEmailMessage> emails;
    
    @InvocableMethod
    public static void sendEmailWithTemplate(WrapperClass[] listOfWrapperClass)
    {
      system.debug('&&&^^^%%%%% '+listOfWrapperClass.size()) ;
      OrgWideEmailAddress[] owea = [select Id from OrgWideEmailAddress where Address = 'contact@daoact.org'];
      //Messaging.SingleEmailMessage mail = new Messaging.SingleEmailMessage();
      
      if (owea.size() > 0 ) {
          orgWideId = String.valueOf(owea.get(0).Id);
      }
      
      Map<String,EmailTemplate> mapOfTemplateId = new Map<String,EmailTemplate>();
      Set<String> setOfTemplateIds = new Set<String>();
      
      for(WrapperClass objWrapperClass : listOfWrapperClass)
      {
          setOfTemplateIds.add(objWrapperClass.TemplateName) ;
      }
      for(EmailTemplate emp : [select id,subject,htmlvalue from EmailTemplate where Id In : setOfTemplateIds])
      {
           mapOfTemplateId.put(String.valueOf(emp.Id).substring(0, 15),emp) ;
      }
      
      emails = new List<Messaging.SingleEmailMessage>();
      
      for(WrapperClass objWrapperClass : listOfWrapperClass){
          
          sendEmail(objWrapperClass.objLead, objWrapperClass.TemplateName,mapOfTemplateId);
      }
      system.debug('$$$###### '+emails.size()) ;
      System.debug('You have made ' + Limits.getEmailInvocations() + ' email calls out of ' + Limits.getLimitEmailInvocations() + ' allowed');
      if(emails.size() > 0)
      {
        Messaging.sendEmail(emails); 
      } 
        
   }
   
    private static void sendEmail(lead__c objLead,String tempId,Map<String,EmailTemplate> mapIdToTemplate){
        
        try{
          //List<Messaging.SingleEmailMessage> emails = new List<Messaging.SingleEmailMessage>();

         Messaging.SingleEmailMessage mail = new Messaging.SingleEmailMessage();
         String body ;
         String subject ;
        
         if(mapIdToTemplate.get(tempId) != null){
             body = mapIdToTemplate.get(tempId).htmlvalue;
             subject = mapIdToTemplate.get(tempId).subject ;
         }
         
         String signatureName ;
         
         if((objLead.If_applying_for_Pre_Release_Access__c == '' || objLead.If_applying_for_Pre_Release_Access__c == null) && objLead.Correct_Answer__c == 4)
         {
            signatureName = 'Signature 1';
         }
         else if((objLead.If_applying_for_Pre_Release_Access__c == '' || objLead.If_applying_for_Pre_Release_Access__c == null) && objLead.Correct_Answer__c < 4)
         {
            signatureName = 'Signature 2';
         }
         else if(objLead.If_applying_for_Pre_Release_Access__c == 'Less Than 1 Ether' && objLead.Correct_Answer__c == 4)
         {
            signatureName = 'Signature 3';
         }
         else if(objLead.If_applying_for_Pre_Release_Access__c == 'Less Than 1 Ether' && objLead.Correct_Answer__c < 4)
         {
            signatureName = 'Signature 4';
         }
         else if(objLead.If_applying_for_Pre_Release_Access__c == 'Between 1 and 50 Ether' && objLead.Correct_Answer__c == 4)
         {
            signatureName = 'Signature 5';
         }
         else if(objLead.If_applying_for_Pre_Release_Access__c == 'Between 1 and 50 Ether' && objLead.Correct_Answer__c < 4)
         {
            signatureName = 'Signature 6';
         }
         else if(objLead.If_applying_for_Pre_Release_Access__c == 'Over 50 Ether' && objLead.Correct_Answer__c != null)
         {
            signatureName = 'Signature 7';
         }
        
         List<Signature__c> lstOfSign = [select name, Signature__c from Signature__c where name =: signatureName ] ;
         
         body += '<br><br>'+(lstOfSign.size() > 0?lstOfSign[0].Signature__c:'test') ;
         system.debug('%%%%$$$$ '+body) ;
         
         body = body.replace('{!Lead.Name}',objLead.name) ;
         body = body.replace('{!Lead.Correct_Answer__c}',objLead.Correct_Answer__c != null ? String.valueOf(objLead.Correct_Answer__c).subString(0,String.valueOf(objLead.Correct_Answer__c).indexOf('.')) : '') ;
         body = body.replace('</br>','<br>') ;
         mail.setToAddresses(new List<String>{objLead.email__c});
         mail.setSubject(subject);
         mail.setHTMLBody(body);
         mail.setOrgWideEmailAddressId(orgWideId);
         emails.add(mail) ;
         
        /* if(emails.size() > 0)
         {
            Messaging.sendEmail(emails); 
         }*/

        }

        catch(Exception e)
        {
        
        }
    }  
    
    public class WrapperClass{
     
      public WrapperClass(){
          
      }
      @InvocableVariable
      public lead__c objLead ;
      
      @InvocableVariable
      public String TemplateName ;
      
    
    }
     
     
}

NagendraNagendra (Salesforce Developers) 
Hi Rohit,

Which Salesforce Edition are you using? Is it Developer Edition because it has a daily limit of 10 Emails.

You can find the Daily Email Limits of Your Org by Executing the below code for the Developer Console Anonymous block.
Limits.getLimitEmailInvocations();
Hope this helps.

Thanks,
Nagendra