フィールドから日付値を確認し、日付の2日前にユーザーに電子メールを送信するために使用できる(cronベースの)モジュールはありますか?
ない場合、これを実装してcronで動作させるにはどうすればよいですか?
これが、カスタムモジュールを使用せずに行った方法です。
私はそのようにhook_cron
を実装しました:
function HOOK_cron() {
// search for expiration date interval
$result = db_query("SELECT my_date, uid, company_name, nid
FROM my_table
LEFT JOIN ...
LEFT JOIN ...
LEFT JOIN ...
LEFT JOIN ...
WHERE my_date BETWEEN DATE(NOW( ) + INTERVAL 6 DAY ) AND DATE( NOW( ) + INTERVAL 20 DAY)")->fetchAll(PDO::FETCH_ASSOC);
foreach ($result as $product) {
$module = 'MY_MODULE';
$key = 'MY_KEY';
$from = '[email protected]';
$user_account = user_load($product['uid']);
$product_detail = node_load($product['nid']);
$to_user_mail = $user_account->mail;
// build the email
$message = drupal_mail($module, $key, $to_user_mail, LANGUAGE_NONE, array(), $from, FALSE);
//$message['headers']['Content-Type'] = 'text/html; charset=UTF-8; format=flowed';
$message['headers']['Cc'] = '[email protected]';
$message['headers']['Reply-To'] = '[email protected]';
$message['subject'] = 'THE SUBJECT';
$message['body'] = array();
$message['body'][] = 'Dear ' . $user_account->name;
$message['body'][] = '...';
$message['body'][] = 'Regards,';
$message['body'][] = 'YOUR NAME';
// retrieve the responsible implementation for this message.
$system = drupal_mail_system($module, $key);
// format the message body.
$message = $system->format($message);
// send e-mail
$message['result'] = $system->mail($message);
}
}
このモジュールはあなたを助けます スケジュールされたアクション
ルールでcronトリガーを設定できます