如何编写顶点代码以将记录所有者更改的电子邮件警报发送给带有字段信息的旧记录所有者?请帮助
			
			22872 次
		
2 回答
            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 });
    }
}
当然,它目前仅适用于一条记录,需要批量更新以进行批量更新。
于 2012-12-05T04:07:41.643   回答
    
    
            0        
        
		
您不能为所有对象设置通用警报。
相反,为您感兴趣的对象编写一个更新后触发器来比较Trigger.old[n].OwnerId和Trigger.new[n].OwnerId。
我建议将比较代码放在所有触发器调用的类方法中。为此,您可以将Dynamic Apex用于该sObject类型。
在新的类方法中,使用Messaging.SingleEmailMessage类发送警报。
于 2012-12-05T03:12:10.460   回答