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
Jagadeesh AdaveniJagadeesh Adaveni 

Getting error too many BCC addresses,

Hi All,

I'm getting error like
too many BCC addresses,
How can i resolve it.
public PageReference send() {
         List < String > emailTo = new List < String >();
         List < String > emailCc = new List < String >();
         List< document > documentList=[select name from document where Name='logo'];
   
         emailTo.clear();
         emailCc.clear();
       
        stud = [select id, Name, Parent_Alternative_Email_ID__c, Parent_Email__c, Category__c from Student__c where Category__c = : selectcat];
 
        for (student__c std: stud) {
            if(std.Parent_Email__c !=null)
                 emailTo.add(std.Parent_Email__c);
            if(std.Parent_Alternative_Email_ID__c !=null)
                emailCc.add(std.Parent_Alternative_Email_ID__c);
        } 
        
        
       List<Messaging.SingleEmailMessage> mails= new List<Messaging.SingleEmailMessage>();
       Messaging.SingleEmailMessage semail = new Messaging.SingleEmailMessage();
        semail.setBccAddresses(emailTo);    
        semail.setCcAddresses(emailCc);
        semail.setSubject(subject);
     
        semail.setHtmlBody(body);
        mails.add(semail);
        if(!mails.isEmpty()){
        if(!semail.BccAddresses.isEmpty()){
         Messaging.sendEmail(mails);
         ApexPages.Message myMsg = new ApexPages.Message(ApexPages.Severity.INFO, 'Email has been sent');
                    ApexPages.addMessage(myMsg);
                    
        }
        else{
        ApexPages.Message myMsg = new ApexPages.Message(ApexPages.Severity.WARNING, 'No Students are availble for selecting Category');
                    ApexPages.addMessage(myMsg);
        
           }
        }
        mails.clear();
        subject='';
        body='';
        selectcat='';
        return null;
        
    }

 
Pankaj_GanwaniPankaj_Ganwani
Hi,

As per the salesforce documentation, you cannot set more than 25 BCC and CC addresses for a single email instance. To prevent this, you will have to put size check such that it should not allow more than 25 addresses while putting the email addresses in the list. 

Thanks,
Pankaj
Jagadeesh AdaveniJagadeesh Adaveni
HI,
changed code again getting same error
public PageReference send() {
         List < String > emailTo = new List < String >();
         List < String > emailCc = new List < String >();
         //List< document > documentList=[select name from document where Name='logo'];
   
         emailTo.clear();
         emailCc.clear();
       
        stud = [select id, Name, Parent_Alternative_Email_ID__c, Parent_Email__c, Category__c from Student__c where Category__c = : selectcat];
 		Integer count = 0;
          for (student__c std: stud) {
            count++;
            if(std.Parent_Email__c !=null)
                 emailTo.add(std.Parent_Email__c);
            if(std.Parent_Alternative_Email_ID__c !=null)
                emailCc.add(std.Parent_Alternative_Email_ID__c);
            if(math.mod(count,25) == 0)
            {
             	List<Messaging.SingleEmailMessage> mails= new List<Messaging.SingleEmailMessage>();
       			Messaging.SingleEmailMessage semail = new Messaging.SingleEmailMessage();
       		 	semail.setBccAddresses(emailTo);    
                semail.setCcAddresses(emailCc);
                semail.setSubject(subject);
     
                semail.setHtmlBody(body);
                mails.add(semail);
                if(!mails.isEmpty()){
                    if(!semail.BccAddresses.isEmpty()){
                        Messaging.sendEmail(mails);
                        ApexPages.Message myMsg = new ApexPages.Message(ApexPages.Severity.INFO, 'Email has been sent');
                        ApexPages.addMessage(myMsg);
                        
                    }
                    else{
                        ApexPages.Message myMsg = new ApexPages.Message(ApexPages.Severity.WARNING, 'No Students are availble for selecting Category');
                        ApexPages.addMessage(myMsg);
                        
                    }
                }
                mails.clear();   
            }
              }
                 List<Messaging.SingleEmailMessage> mails= new List<Messaging.SingleEmailMessage>();
                  Messaging.SingleEmailMessage semail = new Messaging.SingleEmailMessage();
                  semail.setBccAddresses(emailTo);    
                  semail.setCcAddresses(emailCc);
                  semail.setSubject(subject);
                  
                  semail.setHtmlBody(body);
                  mails.add(semail);
                  if(!mails.isEmpty()){
                      if(!semail.BccAddresses.isEmpty()){
                          Messaging.sendEmail(mails);
                          ApexPages.Message myMsg = new ApexPages.Message(ApexPages.Severity.INFO, 'Email has been sent');
                          ApexPages.addMessage(myMsg);
                          
                      }
                      else{
                          ApexPages.Message myMsg = new ApexPages.Message(ApexPages.Severity.WARNING, 'No Students are availble for selecting Category');
                          ApexPages.addMessage(myMsg);
                          
                      }
                  }
                  mails.clear();
                  subject='';
                  body='';
                  selectcat='';
     
        		return null;
      
        
    }
Pankaj_GanwaniPankaj_Ganwani
Hi Jagadeesh,

I made some edits in your code. Please refer it:
 
public PageReference send() {
         List < String > emailTo = new List < String >();
         List < String > emailCc = new List < String >();
         //List< document > documentList=[select name from document where Name='logo'];
   
         emailTo.clear();
         emailCc.clear();
       
        stud = [select id, Name, Parent_Alternative_Email_ID__c, Parent_Email__c, Category__c from Student__c where Category__c = : selectcat];
 		Integer count = 0;
          for (student__c std: stud) {
            count++;
            if(std.Parent_Email__c !=null && emailTo.size() <25)
                 emailTo.add(std.Parent_Email__c);
            if(std.Parent_Alternative_Email_ID__c !=null && emailCc.size() < 25)
                emailCc.add(std.Parent_Alternative_Email_ID__c);
            
            
             	List<Messaging.SingleEmailMessage> mails= new List<Messaging.SingleEmailMessage>();
       			Messaging.SingleEmailMessage semail = new Messaging.SingleEmailMessage();
       		 	semail.setBccAddresses(emailTo);    
                semail.setCcAddresses(emailCc);
                semail.setSubject(subject);
     
                semail.setHtmlBody(body);
                mails.add(semail);
                if(!mails.isEmpty()){
                    if(!semail.BccAddresses.isEmpty()){
                        Messaging.sendEmail(mails);
                        ApexPages.Message myMsg = new ApexPages.Message(ApexPages.Severity.INFO, 'Email has been sent');
                        ApexPages.addMessage(myMsg);
                        
                    }
                    else{
                        ApexPages.Message myMsg = new ApexPages.Message(ApexPages.Severity.WARNING, 'No Students are availble for selecting Category');
                        ApexPages.addMessage(myMsg);
                        
                    }
                }
                mails.clear();   
            
              }
                 List<Messaging.SingleEmailMessage> mails= new List<Messaging.SingleEmailMessage>();
                  Messaging.SingleEmailMessage semail = new Messaging.SingleEmailMessage();
                  semail.setBccAddresses(emailTo);    
                  semail.setCcAddresses(emailCc);
                  semail.setSubject(subject);
                  
                  semail.setHtmlBody(body);
                  mails.add(semail);
                  if(!mails.isEmpty()){
                      if(!semail.BccAddresses.isEmpty()){
                          Messaging.sendEmail(mails);
                          ApexPages.Message myMsg = new ApexPages.Message(ApexPages.Severity.INFO, 'Email has been sent');
                          ApexPages.addMessage(myMsg);
                          
                      }
                      else{
                          ApexPages.Message myMsg = new ApexPages.Message(ApexPages.Severity.WARNING, 'No Students are availble for selecting Category');
                          ApexPages.addMessage(myMsg);
                          
                      }
                  }
                  mails.clear();
                  subject='';
                  body='';
                  selectcat='';
     
        		return null;
      
        
    }

 
Jagadeesh AdaveniJagadeesh Adaveni
Hi,

Getting error. could you see below error


System.LimitException: Too many Email Invocations: 11
Error is in expression '{!send}' in component <apex:commandButton> in page sendemailtocategory: Class.CategoryEmail.send: line 53, column 1
Class.CategoryEmail.send: line 53, column 1
 
Pankaj_GanwaniPankaj_Ganwani
Hi,

I think, we have written the sendEmail functionality code twice. Please refer below code:
 
public PageReference send() {
         List < String > emailTo = new List < String >();
         List < String > emailCc = new List < String >();
         //List< document > documentList=[select name from document where Name='logo'];
   
         emailTo.clear();
         emailCc.clear();
       
        stud = [select id, Name, Parent_Alternative_Email_ID__c, Parent_Email__c, Category__c from Student__c where Category__c = : selectcat];
 		Integer count = 0;
          for (student__c std: stud) {
            count++;
            if(std.Parent_Email__c !=null && emailTo.size() <25)
                 emailTo.add(std.Parent_Email__c);
            if(std.Parent_Alternative_Email_ID__c !=null && emailCc.size() < 25)
                emailCc.add(std.Parent_Alternative_Email_ID__c);
            
            
                 List<Messaging.SingleEmailMessage> mails= new List<Messaging.SingleEmailMessage>();
                  Messaging.SingleEmailMessage semail = new Messaging.SingleEmailMessage();
                  semail.setBccAddresses(emailTo);    
                  semail.setCcAddresses(emailCc);
                  semail.setSubject(subject);
                  
                  semail.setHtmlBody(body);
                  mails.add(semail);
                  if(!mails.isEmpty()){
                      if(!semail.BccAddresses.isEmpty()){
                          Messaging.sendEmail(mails);
                          ApexPages.Message myMsg = new ApexPages.Message(ApexPages.Severity.INFO, 'Email has been sent');
                          ApexPages.addMessage(myMsg);
                          
                      }
                      else{
                          ApexPages.Message myMsg = new ApexPages.Message(ApexPages.Severity.WARNING, 'No Students are availble for selecting Category');
                          ApexPages.addMessage(myMsg);
                          
                      }
                  }
                  mails.clear();
                  subject='';
                  body='';
                  selectcat='';
     
        		return null;
      
        
    }

 
Jagadeesh AdaveniJagadeesh Adaveni
i have 30 emails then code will work for all mails