Untitled
unknown
apex
a year ago
2.1 kB
6
Indexable
// 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());
}
}
}
}Editor is loading...
Leave a Comment