同僚の誕生日が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 });
}
}
}