November 5, 2019

How to avoid sending emails to specific emails from Salesforce?

1. Create a custom object to hold the exception emails.


2. Create records in the custom object.


3. Use the below code.

  1. trigger EmailMessageTrigger on EmailMessage ( before insert ) {  
  2.       
  3.     Set < Id > setEmailRecIds = new Set < Id >();  
  4.     Set < String > setEmailAddress = new Set < String >();  
  5.     Set < String > notAllowedEmails = new Set < String >();  
  6.     Map < Id, String > mapRecIdEmail = new Map < Id, String >();  
  7.       
  8.     for ( EmailMessage objMsg : trigger.new ) {  
  9.           
  10.         if ( String.isNotBlank( objMsg.ToAddress ) )  
  11.             setEmailAddress.addAll( objMsg.ToAddress.split( ';' ) );  
  12.         if ( objMsg.ToIds.size() > 0 )  
  13.             setEmailRecIds.addAll( objMsg.ToIds );  
  14.           
  15.     }  
  16.       
  17.     if ( setEmailRecIds.size() > 0 ) {  
  18.           
  19.         for ( Lead objLead : [ SELECT Id, Email FROM Lead WHERE Id IN: setEmailRecIds ] ) {  
  20.               
  21.             setEmailAddress.add( objLead.Email );  
  22.             mapRecIdEmail.put( objLead.Id, objLead.Email );  
  23.               
  24.         }  
  25.         for ( Contact objContact : [ SELECT Id, Email FROM Contact WHERE Id IN: setEmailRecIds ] ) {  
  26.               
  27.             setEmailAddress.add( objContact.Email );  
  28.             mapRecIdEmail.put( objContact.Id, objContact.Email );  
  29.               
  30.         }  
  31.         for ( User objUser : [ SELECT Id, Email FROM User WHERE Id IN: setEmailRecIds ] ) {  
  32.               
  33.             setEmailAddress.add( objUser.Email );  
  34.             mapRecIdEmail.put( objUser.Id, objUser.Email );  
  35.               
  36.         }  
  37.           
  38.     }  
  39.       
  40.     for ( Email_Exception__c objExcp : [ SELECT Email__c FROM Email_Exception__c WHERE Email__c IN: setEmailAddress ] )  
  41.         notAllowedEmails.add( objExcp.Email__c );  
  42.       
  43.     for ( EmailMessage objMsg : trigger.new ) {  
  44.           
  45.         if ( String.isNotBlank( objMsg.ToAddress ) ) {  
  46.               
  47.             for ( String emailAddr : objMsg.ToAddress.split( ';' ) ) {  
  48.                   
  49.                 if ( notAllowedEmails.contains( emailAddr ) )  
  50.                     objMsg.addError( 'You cannot send email to this email address ' + emailAddr );  
  51.                   
  52.             }  
  53.               
  54.         }  
  55.           
  56.         if ( objMsg.ToIds.size() > 0 ) {  
  57.               
  58.             for ( Id recId : objMsg.ToIds ){  
  59.                   
  60.                 if ( mapRecIdEmail.containsKey( recId ) ) {  
  61.                   
  62.                     if ( notAllowedEmails.contains( mapRecIdEmail.get( recId ) ) )  
  63.                         objMsg.addError( 'You cannot send email to this email address ' + mapRecIdEmail.get( recId ) );  
  64.                       
  65.                 }  
  66.                   
  67.             }  
  68.         }  
  69.     }  
  70.   
  71. }  

Output:



No comments:

Post a Comment