メルマガを配信できるSOY Mailには送信予約日時を設定して送信できる機能があります。

管理画面で送信予約日時を設定して、送信予約ボタンでメルマガの文章を保存しておくと、予約日時に合わせて送信するという機能ではありますが、

SOY Mailのインストールだけでは設定した送信予約日時に自動で送信されることはありません。


そこでインストールした大半のサーバで利用できるcronという定時実行を行うコマンドを利用します。

crontab - Wikipedia


先日、cronの設定をどのようにすれば良いのかわからないという方がいましたので、

仕組みも合わせて説明を記載します。




まず、cronの設定方法ですが、


# (行頭の # マークはコメント行を示す)
# +------------ 分 (0 - 59)
# | +---------- 時 (0 - 23)
# | | +-------- 日 (1 - 31)
# | | | +------ 月 (1 - 12)
# | | | | +---- 曜日 (0 - 6) (日曜日=0)
# | | | | |
# * * * * * 実行されるコマンド

crontab - Wikipediaより抜粋


上記のような記述ルールがあり、

例えば、実行したいスクリプトが、/var/html/www/sample/job/exe.phpに記載されている場合、

PHPでこのスクリプトを実行するコマンドはファイルの前にphpを追加して、

php /var/html/www/sample/job/exe.php

このようになる。


それでは、

このコマンドを毎日0時50分に実行したい場合は、

cronの設定は上記のルールに従い、

50 0 * * * php /var/html/www/sample/job/exe.php

こうなる。


もうひとつ例として、毎月はじめの日付が変わった時に実行したい場合は

1 0 1 * * php /var/html/www/sample/job/exe.php

こうなる。

※毎月1日の0時1分に実行


最後の例として30分おきに実行したい場合は、

*/30 * * * * php /var/html/www/sample/job/exe.php

設定したい箇所を分数で指定すれば良いらしい。


ここでの説明は雑なので、

詳しく知りたい方は検索してもらうとして、

これらの話を前提にSOY Mailの送信予約設定の説明に入ります。





送信予約設定ですが、メールの文章の作成画面で送信予定時刻を設定します。

秒単位で設定出来ますが、SOY Mailにはこの時刻ピッタリにサーバを介してメールを送信する仕組みはありません。


送信予約を行うためにはcronを利用する必要があります。

しかし、ここで一つ問題があります。


cronで送信予約時刻の値をそのまま登録すると、

今回の送信以外では予約送信が行われないことになります。

23 5 31 8 * {SOY Mailのコマンド}

※SOY Mail用のコマンドは管理画面のヘルプに記載されています


そこで少し工夫をします。

送信予約ピッタリに送信するのではなく、

10分置きに自動送信のスクリプトを実行してみて、

送信予約設定されているメールで予約日時を超えていてまだ未送信のメールがあれば送信するという発想でcronの設定をしてみます。

*/10 * * * * {SOY Mailのコマンド}

SOY Mail側で設定した送信予約時刻よりも若干遅い送信になりますが、

一つの設定でどんな時刻の予約配信もできる様になります。




次に何分置きにメールを送信すれば良いの?という話になりますが、

サーバによっては短い間隔で一度にたくさんのメールを送信するとエラーになる環境があります。


SOY Mailは分割配信といって、



一度に送信する件数が多い場合は一度に送信するメール件数を制限して、

cronを利用して、一度の実行で送れなかったメールは次回送信する仕組みがあります。


cronの実行間隔は分割配信も考慮して、

最低でも標準設定の20分置きにコマンドを実行するのが良いでしょう。

*/20 * * * * {SOY Mailのコマンド}