2

レコード所有者の変更に関するメールアラートを古いレコード所有者にフィールド情報とともに送信するための頂点コードの書き方 助けてください

4

2 に答える 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 });
    }
}

もちろん、現在は 1 つのレコードに対してのみ機能し、一括更新のために一括化する必要があります。

于 2012-12-05T04:07:41.643 に答える
0

すべてのオブジェクトに対して一般的なアラートを設定することはできません。代わりに、と
を比較する関心のあるオブジェクトの after update トリガーを記述します。Trigger.old[n].OwnerIdTrigger.new[n].OwnerId

すべてのトリガーが呼び出すクラス メソッドに比較コードを配置することをお勧めします。この目的でタイプとともにDynamic Apexを使用できます。sObject

新しいクラス メソッドでは、Messaging.SingleEmailMessageクラスを使用してアラートを送信します。

于 2012-12-05T03:12:10.460 に答える