mysql の日付に基づいて電子メールを自動的に送信できるようにしたいと考えています。Crontabs を使用してそれらをスケジュールできることはわかっていますが、問題は、Crontabs が日、月、週などを指定するだけであることです。十分に具体的ではありません..
MySQL テーブルにはさまざまな日付が入力されています。特定のレコードの日付から 3 か月になると、自動的にメールを送信できるようにしたいと考えています。
私に何ができるか知っている人はいますか?
その日に電子メールを送信する必要があるレコードをチェックする 1 日 1 回実行される cron をスケジュールします。
日時であるような列があると想像してくださいnotify_at
-そして、毎日あなたのcronは基本的に行います
SELECT * FROM records WHERE notify_at = DATE(NOW())
cronは次の場所に保存できます/etc/cron.d
/etc/cron.d/send_reminders
:
# run once a day at 1AM
0 1 * * * someuser /path/to/your/script
スクリプトの内容は、疑似コードでのロジックです。
results = fetch_by_sql("SELECT * FROM records WHERE notify_at = DATE(NOW()) AND last_notified_at IS NULL");
foreach(results as record) {
send_email(record.recipient, "Your subject", "Your body");
/* mark the record as notified so we dont ever send multiple emails */
update_sql("UPDATE records SET last_notified_at = NOW() WHERE id = " + record.id);
}