• ベストアンサー

ブラウザからメール予約配信

メール配信を製作している者です。 よろしくお願いいたします。 ■製作環境はFedora core+Apache+FireBird+PHPです。 質問はたいとるどうり「ブラウザからメール予約配信」なんです。 方法としてcronを使って時間になったら配信って事だと思いますが メール配信用に配信スクリプトを作って「crontab -e」に追加って事まではコマンドから出来ました。以下が例 例:「crontab -e」に「*/5 * * * * php -f パス/send.php」追加 例:send.php <?php $to = "hoge@hogehoge"; $title = "テスト配信"; $body .= "テスト配信"; $from = "From: \"hoge\" <hoge@hogehoge>\n"; $return_path = '-f'."hoge@hogehoge"; mb_internal_encoding("SJIS"); mb_language("japanese"); if(mb_send_mail($to, $title, $body, $from, $return_path)){ print "メールが正常に送信されました。<br>\n"; } else { print "メールの送信に失敗しました<br>\n"; } ?> WEB上から上記のことはできないので方法としては、配信したいメールのコピーを作って「crontab -e」に追加。送信したら削除というような ことしか思いつきません。 他にもっと簡単な方法があるかと思います。 ありましたら具体的に、ご教授お願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • yossy-55
  • ベストアンサー率55% (5/9)
回答No.1

私の場合は、cronを10分置き位で走らせておいて、 PHP側では、何時に送信したいかをDBに登録しています。 cronで走らせるスクリプトではDBの時間と比較して DBの時間が現時間より過去の物であり、且つ送信済みフラグが立っていなければ送信して、送信済みのフラグを立てています。 あとはこれの繰り返しです。 これだと、すべてブラウザ上で操作が可能です。

ponpoko603
質問者

補足

とても参考になります。 おそらく自分が想像どうりの物だと思います。 「cronを10分置き位で走らせる」というのは、メール配信スクリプトのテンプレートみたいなものを走らせると言ってるのですよね。 あとは、あらかじめ個人情報DB作ってそこに会社名もしくは個人名とテーブルのパスを入れる。 cronで走らせるスクリプトには配信テーブルを見るようにして、リストをチェックする。配信時はselectするイメージですね。 -------------------------------------------------------------- 「cronで走らせるスクリプトではDBの時間と比較」はどのようにスクリプト書いてますか?もしよかったら「DBの時間と比較」するスクリプトもご教授できますか?ソースのせてもらえたら幸いです。

その他の回答 (2)

  • ham_kamo
  • ベストアンサー率55% (659/1197)
回答No.3

No.2です。補足拝見しました。 > メール予約配信は複数設定できるようにしたいです。 えっと、それはわかっております。atコマンド自体はいくつでも実行予約を登録することができます。ブラウザからメールの配信予約を実行すると、atコマンドでそのメール送信コマンドを予約すればいいのではないでしょうか、という意味です。 同じメールを定期的に配信するのでなく、指定した日時に1回送りたいというのであれば、crontabに登録して実行されたらcrontabから抜く、という煩わしいことをしなくても、atコマンドを使えばいいのでは、ということです。 まあ、配信メールの情報をきちんとDBで管理しているのであれば、No.1さんの方法でよいかとは思いますが。

ponpoko603
質問者

補足

参考なります なるほど!その説明だと分かりやすいです!! 是非、試してみます!

  • ham_kamo
  • ベストアンサー率55% (659/1197)
回答No.2

一つの予約メールが1回だけ送信されるなら、cronでなくatを使った方がいいのでは? http://www.linux.or.jp/JM/html/at/man1/at.1.html http://pop-club.hp.infoseek.co.jp/unix/crontab.html#use_at

ponpoko603
質問者

補足

すばやい対応ありがとうございます。 メール予約配信は複数設定できるようにしたいです。 それとatは初めて知りました。調べてみたいと思います

関連するQ&A