• Lalit Shinde 13
  • NEWBIE
  • 0 Points
  • Member since 2020

  • Chatter
    Feed
  • 0
    Best Answers
  • 0
    Likes Received
  • 0
    Likes Given
  • 0
    Questions
  • 1
    Replies
Hi,
I have a trigger  to delete cases created from bounce mails or undeliverable email (email- to-case). The triiger is not working and i am getting  the below error

The following errors were encountered while processing an incoming email:

INVALID_CROSS_REFERENCE_KEY : invalid cross reference id INVALID_CROSS_REFERENCE_KEY : invalid cross reference id

My triiger code----------------------------


trigger deleteOutOfOfficeEmailAndCases on EmailMessage (after insert) {
   
    if(trigger.isinsert && trigger.isAfter)
    {
         Set<Id> deleteEmailIds = new Set<Id>();
         set<Id> deleteCaseIds = new Set<Id>();
         List<EmailMessage> emailMsgdeleteList = new List<EmailMessage>();
         List<case> deleteCasesList = new List<Case>();
         Set<Id> applicableCaseRecTypes = new Set<Id>();        
         List<Attachment> emailAttachmentDeleteList = new List<Attachment>();
       
        
         for(EmailMessage em : trigger.new)
         {
              if(em.Incoming == true && em.ReplyToEmailMessageId == null)
                {
                    //Bounced Email delete
                    if(em.FromAddress != null)
                    {
                        // the email statarts with 'mailer-daemon' or postmaster are the bounce email address
      if(em.FromAddress.containsIgnoreCase('mailer-daemon') ||em.FromAddress.containsIgnoreCase('postmaster'))
                            deleteEmailIds.add(em.id);
                    }
                   
                }
         }        
         if(!deleteEmailIds.isEmpty())
         {
             for(Attachment atmt :[select Id,ParentId from Attachment where parentId in :deleteEmailIds])
             {
                 emailAttachmentDeleteList.add(atmt);
             }
             for(EmailMessage email : [select id, parentId from EmailMessage where id in :deleteEmailIds])
             {
                 emailMsgdeleteList.add(email);
                 deleteCaseIds.add(email.parentId);
             }
             if(!deleteCaseIds.isEmpty())
             {
                 for(Case c : [select id,casenumber, subject from case where id in :deleteCaseIds])
                 {
                    deleteCasesList.add(c);
                 }
             }        
             if(!emailMsgdeleteList.isEmpty())
             {
                 if(!emailAttachmentDeleteList.isEmpty())
                        delete emailAttachmentDeleteList;
                 delete emailMsgdeleteList;
                
                 if(!deleteCasesList.isEmpty())
                     delete deleteCasesList;
             }
         }        
   }                      

}

Can any body plz let me know how to do this.

Thanks

  • January 13, 2014
  • Like
  • 0