0

同僚の誕生日が2日後にメールを送信するApexスケジューラクラスを作成しました。2日後に誕生日の連絡先を作成しました。連絡先の誕生日は2012年7月29日です。今日の日付は2012年7月27日です。

私は立ち往生しています。エラーメッセージなどは表示されません。クラスを今日12時に実行するようにスケジュールしました。メールが届きませんでした(誰かの誕生日(成功)であるか、Salesforceからコードを実行できなかった(失敗)というエラーメッセージが表示されませんでした)。

トラブルシューティングを行うために、emailメソッドのif(contact.Next_Birthday__c =:system.Today()。addDays(2))も試しましたが、互換性のないタイプのエラーが発生しました。Next_Birthday__cは日付フィールドであるため、タイプに互換性がない理由や、このSOQLステートメントが機能しない理由がわかりません。

何かアドバイスをいただければ幸いです。これが私のコードです。

global class BirthdayNameOptions implements Schedulable{
  global void execute (SchedulableContext ctx)
  {
    sendBirthdayEmail();
  }

  public void sendBirthdayEmail()
  {
    for(Contact con : [SELECT Name FROM Contact WHERE Next_Birthday__c = : system.Today().addDays(2)])
    {
      Messaging.SingleEmailMessage mail = new Messaging.SingleEmailMessage();
      mail.setTemplateId('00XJ0000000M31w');
      mail.setTargetObjectId('005J0000000');
      mail.setSaveAsActivity(false);
      Messaging.sendEmail(new Messaging.SingleEmailMessage[] {mail });
    }
  }    
}
4

1 に答える 1

0

targetObjectIdアウトバウンド電子メール メッセージの をハードコーディングするのではなく、誕生日の連絡先に設定したいと考えています...005J0000000コードの値も有効な ID ではないようです。メールを受信します。テスト目的で、連絡先レコードの電子メールが自分のものに設定されていることを確認して、通知を受信できるようにします。また、Messaging.sendEmail()1 回の実行で呼び出しが 10 回しかないため、これを少しまとめました。これを試してみてください:

global class BirthdayNameOptions implements Schedulable {
    global void execute (SchedulableContext ctx) {
        sendBirthdayEmail();
    }
    public void sendBirthdayEmail() {
        List<Messaging.SingleEmailMessage> mails = new List<Messaging.SingleEmailMessage>();
        for ( Contact con : [SELECT Id, Name FROM Contact WHERE Next_Birthday__c = : system.Today().addDays(2)] ) {
            Messaging.SingleEmailMessage mail = new Messaging.SingleEmailMessage();
            mail.setTemplateId('00XJ0000000M31w');
            mail.setTargetObjectId(con.Id);
            mail.setSaveAsActivity(false);
            mails.add(mail);
        }
        if ( mails.size() > 0 )
            Messaging.sendEmail(mails, false);
    }
}
于 2012-07-27T19:36:27.247 に答える