Untitled
// Trigger für Case Status Änderungen trigger CaseStatusChangeTrigger on Case (after update) { // Liste für Cases die eine E-Mail erhalten sollen List<Case> casesToNotify = new List<Case>(); // E-Mail Template ID dynamisch laden EmailTemplate template = [SELECT Id FROM EmailTemplate WHERE Name = 'CaseStatus' LIMIT 1]; ID emailTemplateId = template.Id; for(Case newCase : Trigger.new) { Case oldCase = Trigger.oldMap.get(newCase.Id); // Prüfen ob sich der Status geändert hat if(newCase.Status != oldCase.Status) { casesToNotify.add(newCase); } } if(!casesToNotify.isEmpty()) { // E-Mails erstellen und senden List<Messaging.SingleEmailMessage> emailsToSend = new List<Messaging.SingleEmailMessage>(); for(Case c : casesToNotify) { // Nur fortfahren wenn Kontakt-Email vorhanden if(c.ContactEmail != null) { Messaging.SingleEmailMessage mail = new Messaging.SingleEmailMessage(); // E-Mail Empfänger setzen mail.setToAddresses(new String[] { c.ContactEmail }); // Template zuweisen mail.setTemplateId(emailTemplateId); // WhatId auf Case setzen für Template-Merge mail.setWhatId(c.Id); // TargetObjectId muss auf einen Kontakt oder User gesetzt werden mail.setTargetObjectId(c.ContactId); // SaveAsActivity auf true setzen um E-Mail im Case zu protokollieren mail.setSaveAsActivity(true); emailsToSend.add(mail); } } // E-Mails senden wenn vorhanden if(!emailsToSend.isEmpty()) { try { Messaging.sendEmail(emailsToSend); } catch(Exception e) { System.debug('Fehler beim E-Mail-Versand: ' + e.getMessage()); } } } }
Leave a Comment