Apex Trigger - 尝试在更新后发送电子邮件

时间:2013-07-25 07:59:29

标签: email salesforce apex-code soql

所以我刚刚完成了计算机学位,刚刚开始了与行业相关的就业,哇......我们真的似乎没有在大学学到很多东西,只是基础知识。

无论如何,我正在学习Apex并尝试编写我的第一个触发器。在线教程非常无情,我发现他们似乎都错过了我的大脑缺乏的东西。

我正在编写一个触发器来自动发送电子邮件到指定的地址,发送电子邮件部分很好但是我想在电子邮件中发送已更改的内容并阅读是否有任何更改。我到目前为止的内容如下:

trigger Test1 on Account (after update) {

if(Trigger.isUpdate) {


    //Commit current transaction, reserver email capacity
    Messaging.reserveSingleEmailCapacity(1);
    //Create an email message object
    Messaging.SingleEmailMessage mail = new Messaging.SingleEmailMessage();

    List<Messaging.SendEmailResult> results = new list<Messaging.SendEmailResult>();
    //hold email address
    String[] toAddresses = new String[] {'example@example.com'};

    //Assign new address string
    mail.setToAddresses(toAddresses);
    //specify return ad (assuming as being sent from server)    
    mail.setReplyTo('pwitherby@gmail.com');
    //sender name
    mail.setSenderDisplayName('Mr Apex Tester');
    //Subject Specification
    mail.setSubject('Subjected to Learning');
    //And... the content
    mail.setPlainTextBody('You have just changed sumek... this really what you want....?')

    if (!results.get(0).isSuccess())                       
        System.debug('That didnt really work did it? Reason: ' + results.get(0).getErrors()[0].getMessage());
    }
}

所以我的主要问题是我无法找到答案: 这项目前是否有效?如果架构中的任何内容被更改/更新,这将发送此电子邮件吗? 我想在电子邮件正文中输入已更改的内容以及更改后的内容,即“您已更改”+ whatsChanged +“to”+ telephoneNumber。 我如何倾听变化,或者它已经在做什么? 我是以一个体面的标准写这个还是只是杂乱的代码!

抱歉,这是我最大的挫折,但是如果没有它,我会努力补充我的问题!

1 个答案:

答案 0 :(得分:1)

  1. 只需写入就足够了,您无需激活触发器。
  2. 您可以通过Trigger.new(以及旧值的Trigger.old)访问更改的新值 有关触发器文档,请参阅here
  3. 也许工作流程更适合您要做的事情。 最后,从一开始就不要太担心代码(或美容)的标准,只有当你的代码变大时它才会有所不同。