web-dev-qa-db-ja.com

cron時に実行してユーザーにメールを送信するタスクを作成する方法は?

フィールドから日付値を確認し、日付の2日前にユーザーに電子メールを送信するために使用できる(cronベースの)モジュールはありますか?

ない場合、これを実装してcronで動作させるにはどうすればよいですか?

2
Ek Kosmos

これが、カスタムモジュールを使用せずに行った方法です。

私はそのように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);
    }
}
2
Ek Kosmos

このモジュールはあなたを助けます スケジュールされたアクション

ルールでcronトリガーを設定できます

0
witchcraft