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
saud shrumtechsaud shrumtech 

Insert failed. First exception on row 0; first error: CANNOT_INSERT_UPDATE_ACTIVATE_ENTITY, LeaveUpdatetrigger: execution of AfterUpdate caused by: System.EmailException: SendEmail failed. First exception on row 0; first error: SINGLE_EMAIL_LIMIT_EXCEEDED

How do i avoid the Email limit that is 10-15 for a day ?

trigger LeaveUpdatetrigger on Leave__c (after update,before delete) {
    
    if(trigger.isInsert || trigger.isUpdate){
        for(Leave__c lv : trigger.new){
            Leave__c lev = [Select Name,EmployeeName__r.Name from Leave__c where EmployeeName__c =:lv.EmployeeName__c limit 1];
            EmailTemplate et = [SELECT Id,Subject,HtmlValue, Body FROM EmailTemplate WHERE DeveloperName =:'Update_to_Hr_on_Leave_modification'];
             system.debug('--EmailTemplate--'+et);
            //String subject = 'TEST';
            String body = et.HtmlValue;
            body = body.replace('{!Leave__c.EmployeeName__c}',lev.EmployeeName__r.Name);
            Messaging.SingleEmailMessage mail = new Messaging.SingleEmailMessage();
            mail.toAddresses = new String[] { 'saudsyed20@gmail.com' };
                mail.setSubject(et.subject);
            mail.setHtmlBody(body);
            
            mail.setplainTextBody(et.body);
            // mail.setTargetObjectIds(lv.id);
            mail.setTemplateId('00X2v000001H9oK'); //Id of the Email Template
            Messaging.sendEmail(new Messaging.SingleEmailMessage[] { mail });
        }
    }
   // if(trigger.isdelete)
     if(Trigger.isBefore || trigger.isdelete){
        for(Leave__c lv : trigger.old)
        {
            Leave__c lev = [Select Name,EmployeeName__r.Name from Leave__c where EmployeeName__c =:lv.EmployeeName__c limit 1];
            
            EmailTemplate et = [SELECT Id,Subject,HtmlValue, Body FROM EmailTemplate WHERE DeveloperName =:'Update_to_HR_on_Leave_deletion'];
            //system.debug('--EmailTemplate--'+et);
            //String subject = 'TEST';
            String body1 = 'TEST';
            String body =et.HtmlValue;
            body = body.replace('{!Leave__c.EmployeeName__c}',lev.EmployeeName__r.Name);
            Messaging.SingleEmailMessage mail = new Messaging.SingleEmailMessage();
            mail.toAddresses = new String[] { 'saudsyed20@gmail.com' };
                mail.setSubject(et.subject);
            mail.setHtmlBody(body);
            mail.setplainTextBody(et.body);
            // mail.setTargetObjectIds(lv.id);
            //mail.setTemplateId('00X2v000001H9oe'); //Id of the Email Template
            mail.setTemplateId('00X2v000001H9oe');
            Messaging.sendEmail(new Messaging.SingleEmailMessage[] { mail });
        }                    
    }
}
Marcio_FritschMarcio_Fritsch
I think you should catch SendEmailResult as below and treat different for those rows which did not send:
    List<Messaging.SendEmailResult> lResult = Messaging.sendEmail(listmass , false); 
            for(integer i=0;i<lresult.size();i++){
                if(lresult[i].issuccess()){
                    ltoDelete.add(lPmsend[i]);
                }
            }