You need to sign in to do that
Don't have an account?

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 ;
}
}
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.
- https://help.salesforce.com/articleView?id=Checking-the-SingleEmailMessage-limit&language=en_US&type=1 (https://help.salesforce.com/articleView?id=Checking-the-SingleEmailMessage-limit&language=en_US&type=1" target="_blank)
- https://www.soliantconsulting.com/blog/how-to-avoid-governor-limits-with-sendemail-in-apex
Hope this helps.Thanks,
Nagendra