• ベストアンサー

データーが更新されたらSendmailで自動送信

データーが更新されたらSendmailで自動送信 全くの初心者です。 phpかcgiでサーバーのtextファイル又はmysqlのデーターが更新されたらSendmailで 自動でメールを送信(配信)して「更新されました」とか通知されるような フリーでシンプルなプログラムを探しています。 ダウンロードできるところはありませんか? またはそのままペーストして使えるようなプログラムを教えて頂けませんでしょうか? どうかよろしくお願いいたします。

  • PHP
  • 回答数2
  • ありがとう数1

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

  • ベストアンサー
回答No.2

> phpかcgiでサーバーのtextファイル又はmysqlのデーターが更新されたらSendmailで > 自動でメールを送信(配信)して「更新されました」とか通知されるような > フリーでシンプルなプログラムを探しています。 > ダウンロードできるところはありませんか? 質問文を読む限り、前の回答者様が答えた返答は的外れに感じました。 その返事に書かれている事で大部分実現できているように感じました。 #このままペーストしてhtmlを更新しても動きませんでした。 質問には『サーバーのtextファイル又はmysqlのデーターが更新されたら』とありましたが、『htmlを更新』でメールがくるように希望しているのでしょうか。その場合は別途htmlの更新を監視する必要があります。(前の回答者様の回答はこういう場合の回答ですね) #このphpのアドレスをブラウザでリロードすると一応メールは来るのですが、 #中身は白紙でした。 これで、メールがきているので大部分できているのではないでしょうか。 『サーバーのtextファイル又はmysqlのデーターが更新されたら』というのは、そのページに書かれているformの処理か何かで更新すると仮定しての話ですが。 後はタイトルとメッセージが入ってくる様に調整すれば良いだけなのでは。 その部分は、日本語文字に関する設定で調整可能かと思います。(mbstring) 現在の設定内容が書かれてませんので、前の回答に貼り付けてあった日本語文字列の扱いに関する部分が妥当か妥当でないかもわかりませんが。 その辺りの調整で調整できるかと思います。 <?php phpinfo(); ?> 上記内容のテキストをサーバに配置してそのファイルをアクセス、mbstring関連の設定を確認してください。 phpファイルの漢字コードとスクリプトエンコーディングが合致してなく、ソース中に書いた文字データが正しく扱われてないだけかも知れません。 mbstring.script_encoding はどんな値になっているでしょうか。 あと、 :: // 一度送ったらもう送らない :: if(!file_exists("sended.txt")) { という所は正しいでしょうか。何でも一度送ったら、二度と送らない(再表示で一度送ったからもう送られないかも)な処理に見えますが。ここはテキストファイルの更新やデータベースの更新を検出して更新した場合に送るように変える必要があるのではないかな。もしくは、処理したら毎回更新する[ if(!file_exists~) を削除してしまえば良さそう]で良いのではないかな。 :: $fco = fopen("sended.txt","w"); これも、通常はログファイルって追記すると思いますが、最後の一回だけの記録に毎回更新する事になりそうです。そういう処理で良いのでしょうかね。確認されると良いかと思います。 http://php.net/manual/ja/mbstring.configuration.php http://www.php.net/manual/ja/function.mb-send-mail.php http://manual.xwd.jp/ref.mbstring.html

tansansooda
質問者

お礼

saijyo_739 様 ご回答ありがとうございます。 たくさんヒントを頂きまして大変感謝いたします。 教えていただいた通り formの処理でこれが動いてメールを発信するように組み込めば これでできそうですね。 私にできるかどうか、なかなか難しいですが。。 分からないなりにがんばってやってみます。 本当にありがとうございました。 又何かありましたら是非よろしくお願いいたします。

その他の回答 (1)

  • yambejp
  • ベストアンサー率51% (3827/7415)
回答No.1

RSSを設定しておいて、定期的にcronでチェックしてメールするとか 複合した技術になるので、ひとつひとつクリアしていった方が かえって早道だとおもいますが・・・

tansansooda
質問者

補足

ご回答頂きましてありがとうございます。 RSS配信を考えましたが、.htaccess認証ディレクトリの為できないようでした。 cronというものも始めて知りましたが、.htaccess認証ディレクトリからでもできるのでしょうか? Sendmailではなく、 またhtml更新のメール通知のプログラムの様ですが、 下記のwebページのphpを見つけたのですが http://www.geocities.jp/maple4estry/lost_source5.html 下記内容です。 <?php // チェック先 URL $check_url = "http://www.ほげ.com/"; // 更新で削除されそうな文字列正規表現 $check_str = "2005/1/14 17:15 更新"; // チェック先 HTML の文字コード $check_charset = "SJIS"; // このシステムが動く文字コード (Fedora なので UTF-8) $system_charset = "UTF-8"; // 更新通知先メールアドレス $mail_address = "hoge@もげ.com"; // システム文字コードを PHPに設定 mb_language("ja"); mb_internal_encoding($system_charset); // HTTP で対象サイト HTML 取得 if(!$fno = fopen($check_url, 'r')) { die("$check_url を開くことができませんでした"); } // HTML から更新チェック用文字列を探す $find = false; while($line = fgets($fno)) { // 取得 HTML の文字コードをシステムに一致させる $line = mb_convert_encoding($line, $system_charset, $check_charset); if(ereg($check_str, $line)) { $find = true; break; } } fclose($fno); // 文字列が発見できなかったら更新と見なしてメール送信 if($find == false) { // 一度送ったらもう送らない if(!file_exists("sended.txt")) { mb_send_mail($mail_address, "更新通知", "$check_url が更新されたよ。" ); // メール送ったら送信時間を書いたファイルを作成しておく $fco = fopen("sended.txt","w"); $today = date("Y/m/d l H:i:s"); fputs($fco, $today . "\n"); fclose($fco); } } ?> このままペーストしてhtmlを更新しても動きませんでした。 このphpのアドレスをブラウザでリロードすると一応メールは来るのですが、 中身は白紙でした。 このようなプログラムを動くようにするのは どうすればよろしいのでしょうか? それとも私は何か大きな勘違いをしてるのでしょうか? たくさん捕捉させて頂いて本当に申し訳ありませんが、 どうかよろしくお願いいたします。

関連するQ&A

  • sendmailでメールが送信されない。

    こんにちは。 自動応答メールフォームのCGI「ThemeResMail」というのを 使っているのですが、うまく動作しません。 このcgiをアップしたのは以下のレンタルサーバーです。 http://www.dot5hosting.com/dot5/ 使用しているcgiはこれです。 http://apps.cside.com/theme/tmresmail/ メール送信完了画面は出るのですが、 送信者、あて先共にメールが届きません。 同じ設定で他のサーバー(xrea)ではうまくいきました。 sendmailとperlのパスは調べた所、間違いないようです。 ■dot5でのパス sendmail /usr/sbin/sendmail Perl /usr/bin/perl 何が原因なのかどんな事でも結構ですのでコメント頂けると助かります。 よろしくお願いします。

    • ベストアンサー
    • Perl
  • 自動更新について質問です。

    自動更新について質問です。 PHPかHTMLかCGOどれで質問しようか迷いましたが、作っているプログラムがPHPなのでPHPのカゴテリで質問しました。 <meta http-equiv="refresh" content="30; url=top.php" /> で、自動更新をしています。 (1)テキストエリアに入力された文字列をOKボタンを押して更新してもデータが保持されるには? (そのテキストエリアはパスワード形式です。) >> (2)テキストエリアに書き込み中に自動更新されてもデータを保持するには? >> この二つの

    • ベストアンサー
    • PHP
  • sendmailについて教えて下さい。

    今回初めて自動返信付アンケートフォームを作ることになりました。 フリーのものでCGIで作成されたものを修正しながら作成したのですが、自社サーバー上でうまく動作しません。(Windows2000サーバー) (個人で使っているレンタルサーバーではうまく動きました。) 受信した数をカウントする機能は動いているようなのでPerlは動作しているようです。 どうもsendmailが動いていないのかと推測をしています。 C:\bin\sendmail.exeとiniファイルが入っていたので(誰が入れたのか分からず動いているのかが不明です。)、パスを『 $sendmail = 'c:/bin/sendmail'; 』としましたが駄目でした・・・。 別の人が開発したページでは送信できるシステムがあり、javaやaspが使用されているのですが、これらの言語ではsendmailを必要ないのでしょうか? パスが間違っているのか、sendmailが動いていないのか・・・どのように確認したらよいのか困っています。アドバイスをお願いします。

    • ベストアンサー
    • CGI
  • sendmailについて教えて下さい。

    はじめまして。プログラムは初心者なので、よくわからないので誰かご教授お願いします。 フォームメール設置で、今までサーバーはLinxでsendmailだったのですが、windowsサーバーにも設置しようとおもったところwindowsサーバーはblatjですので、送信してくれません。そこでsendmail用に作られたcgiをblatjで動くようにソースを変えることは可能なのでしょうか?? 説明もへたで申し訳ないですが、親切な方ご教授お願いします。

    • 締切済み
    • CGI
  • sendmailで自サーバーへ送信できない

    phpからのメール送信で、sendmailで自サーバーあてのメールが送信できません。他サーバー宛ては送信できます。 chmod 4555 sendmail または chmod 4555 mailwrapper にすると送信できますが、セキュリティーが怖いです。 現在は パーミッション 0555 です。 2555 でも送信できません。 何か正しい設定があると思うのですが、色々調べましたが分かりませんでした。なにかヒントをいただければありがたいです。よろしくおねがいいたします。

  • sendmail

    PerlやPHPにはsendmailを使ってメール送信する関数があったと思いますが、sendmailというメールサーバを起動していなくてはいけないのですか? メールサーバならsendmailサーバの他にpostfixやqmailなどがあるじゃないですか。

  • SendMailを使用しないメール送信CGI

    Webブラウザよりメールを送信するようなCGIは たいていサーバー側のSendmailの機能を利用していますが、 その機能を利用しないメールを送信するCGIがあったら、 ご紹介ください。

    • ベストアンサー
    • CGI
  • sendmailについて教えてください。

    linux9(redhat)で、sendmail・qpopperを使ってメールを送信したいのですが、うまくいきません。 ルーターのポートは25・110ともに開いています。 サーバーのCGI(フォーム)からは、相手を問わず送信できるのですが、ローカルのPCからは送信できません。 どこを触ればいいのかわからないので教えていただけませんか? 宜しくお願いします。

  • sendmailのしくみ

    OCN無料サーバーで CGI sendmailがありますが(独自CGI不可)  個別のページに 問合せ送信ボタンを付け それぞれ 違う メールアドレスに問合せ内容を送ることは可能なのでしょうか?

  • Xサーバーのcronでcgiが自動更新されません。

    perl初心者です。RSSを取得してタイトルや内容をhtmlに吐き出すというプログラムを作成しています。Xサーバーで指定時間に指定コマンド(プログラム)を自動的に実行させるサーバーの機能(cron)といものがあったのでマニュアル  http://www.xserver.ne.jp/man_program_cron.php を見て自動更新しようと試みているのですがプログラムが実行されません。 hello.cgiというプログラムを実行しようとしているので マニュアルにある絶対パスの記入例の通り /home/●●●/▲▲▲/public_html/hello.cgi とXサーバーのCron設定で記入しています。自動更新の時間になったら「Cron結果の通知アドレス」で設定したメールは届くのですがプログラムは実行されてません。 cronの機能を使う際perlのほうで(ここではhello.cgi)何か記述する必要があるのでしょうか?もしくは何かモジュールとか必要なのでしょうか? ps. cron以外でもperlのプログラムを自動的に動かす方法があったら教えて下さい。宜しくお願いします。

    • ベストアンサー
    • Perl

専門家に質問してみよう