如何使用字段信息编写顶级代码,以便将记录所有者更改的电子邮件警报发送给旧记录所有者?帮助请
答案 0 :(得分:5)
请参阅http://www.salesforce.com/us/developer/docs/apexcode/Content/apex_classes_email_outbound.htm以了解有关发送出站电子邮件的详情。
以下是更改所有者时向前一位所有者发送电子邮件的示例代码:
trigger SendEmailOnOwnerChange on Account (after update) {
if (trigger.old[0].OwnerId != trigger.new[0].OwnerId) {
Messaging.SingleEmailMessage mail = new Messaging.SingleEmailMessage();
String emailAddr = [select Email from User where Id = :trigger.old[0].OwnerId].Email;
String newOwnerName = [select Name from User where Id = :trigger.new[0].OwnerId].Name;
String[] toAddresses = new String[] {emailAddr};
mail.setToAddresses(toAddresses);
mail.setSubject('Owner Changed for Account : ' + trigger.new[0].Name);
mail.setPlainTextBody('Owner of Account: ' + trigger.new[0].Name + ' Changed to ' + newOwnerName);
mail.setHtmlBody('Owner of Account: <b>' + trigger.new[0].Name + '</b> Changed to <b>' + newOwnerName + '</b>');
Messaging.sendEmail(new Messaging.SingleEmailMessage[] { mail });
}
}
当然,它目前仅适用于一条记录,需要批量进行批量更新。
答案 1 :(得分:0)
您无法为所有对象设置通用警报
相反,为您感兴趣的对象编写一个更新后触发器,以比较Trigger.old[n].OwnerId
和Trigger.new[n].OwnerId
。
我建议将比较代码放在所有触发器调用的类方法中。您可以使用sObject
类型将Dynamic Apex用于此目的。
在新的类方法中,使用Messaging.SingleEmailMessage类发送警报。