プロが教えるわが家の防犯対策術!

質問させてください。

先日以下の通り、メールを数日後に自動送信する方法を質問したものです。

http://oshiete.goo.ne.jp/qa/7051411.html

この時はDBの作成を提案していただいたのですが、残念ながらこちらの環境ではDBを使用できないようです。

代替案としては何かありませんでしょうか。

メールの送信ごとにスレッドを作成する方法も考えたのですが、大量をメモリを必要としますし、再起動すると送信する予定のものが全てなくなってしまうので・・・。

何度も申し訳ありません。
以上よろしくお願いいたします。

A 回答 (4件)

DBでなくても、


ファイルに時刻やメール内容を記録しておいて
そのディレクトリのファイルにそって、メール発行して
終われば、それを削除する処理を書いたプログラムをcronで実行って感じでも可能ですよね。

ただ、atコマンドが使えるサーバーなら、メール発行処理をシェルファイルにしておいて
at 日時  < シェルファイル
で その日時で 実行予約できるので、このほうが簡単な場合もあります。

-----uniq_file.sh ----
/usr/lib/sendmaiil -t -ffrom@address.com << @@@
From: from@address.com
To: to@address.com
Subject : base64でエンコードしたタイトル

メール本文
@@@
-----------

Process process = Runtime.getRuntime().exec( "at 19:57 07112011 < uniq_file.sh");
process.waitFor();

という感じで。

確認は、 atqコマンドで待機リストを取り出せますし、
atrm ジョブ番号 で予約を取り消しすこことも可能です。


ただ、レンタルサーバーで、 Webサービスのアカウントが別のWebサービスと共通だと
よそのbatchコマンドやatコマンドの内容が見えてしまうので(見せてしまうので)
そういう場合はsudo を組み合わせて、独立したアカウントでatでの予約をする必要があります。
(ないしは、はやりcronで)
    • good
    • 0
この回答へのお礼

ありがとうございます。
全く知らない実現方法でした。

検討してみます。

お礼日時:2011/11/09 17:06

DBが使えないとすればテキストファイルに記録しておくのはどうですか?


イメージはsendmailとかのメールキューです。

1受付1ファイルで記録し、返信が終わったら消す。
ファイル名が重複しないように命名に工夫が必要ですかね。。。

ファイル名に受付日時を含めておくと、一定時間が経過したものを
拾い出すのに使えるかもしれません。

中身の形式例えば、1行めは日時、2行目はメールアドレスだとかでもいいだろうし
メールのヘッダみたいな形式でもいいだろうし、
XMLでも、JSONでもなんでも扱いやすいもので。


cronやタスクスケジューラで定期的に起動してもいいし
自作のプログラムを常駐させておいて、その中で定期的に
対象データのピックアップを行ってもいいかと思います。
    • good
    • 0
この回答へのお礼

ありがとうございます。
DBが使えないとなると、やはりファイルが一番シンプルでしょうか・・・。

検討してみます。

お礼日時:2011/11/09 17:08

h2database とか sqlite3 とか Java上でうごくDBもNG?



クローンで定期的にメールボックスをみて○日経過したものがあったら送信処理とかでもいいかもね。
    • good
    • 0
この回答へのお礼

ありがとうございます。
どうにもDB自体の使用がNGみたいです。

メールボックスを実装すればできるということでしょうか・・・。

お礼日時:2011/11/09 17:07

先のご質問の回答にも提案されていますが、



 メール受信の都度、 UNIX系だったら cron 、
Windows だったタスク・スケジューラに、メール送信処理の起動日時を
登録すれる方法で良いと思います。


  ちなにみ、一日あたりの受信メールの件数は、どの程度と見積もっていますか?

この回答への補足

ありがとうございます。
一日あたりの受信メールは、10件程度と見積もっています。

補足日時:2011/11/09 17:05
    • good
    • 0
この回答へのお礼

あろがとうございます。
結局、DBを使用できる環境をなんとか用意して対応しました。
お知恵を貸していただいたのに申し訳ありません。

お礼日時:2011/11/16 17:20

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!