Apex Code发送电子邮件提醒

时间:2012-12-04 11:00:29

标签: salesforce apex-code

如何使用字段信息编写顶级代码,以便将记录所有者更改的电子邮件警报发送给旧记录所有者?帮助请

2 个答案:

答案 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].OwnerIdTrigger.new[n].OwnerId

我建议将比较代码放在所有触发器调用的类方法中。您可以使用sObject类型将Dynamic Apex用于此目的。

在新的类方法中,使用Messaging.SingleEmailMessage类发送警报。