メール受信時に PHP スクリプトを起動して自動処理させる方法
以前、メール受信時に perl スクリプトを起動して自動処理させる方法という記事を書きましたが、それのPHP版です。
上記のエントリでも書いていますが、メール受信時に何らかの処理を行なうプログラムを作る場合、
- 特定のメールアカウントにメールが届いた際に、何らかのプログラムが起動するように設定する
- そのプログラムを書く
という2つのステップが必要ですが、そのうち1番目のステップに関しては、perl だろうが PHP だろうが、全く関係ありません。
なので、1ステップ目のメールサーバー側の設定に関しては、メール受信時に perl スクリプトを起動して自動処理させる方法を参照してください。
メールを処理する PHP スクリプトの書き方
PHP というと、Webアプリケーションに特化した言語、というイメージがありますが、もちろん perl と同じように、シェル的な使い方もできます。
メールを受け取った PHP スクリプトで、標準入力の内容を読めば、メール受信時の処理を行なえます。
ちなみに PHP の場合、PEAR の Mail_Mime というパッケージを使うと、メール受信時の処理が非常に簡単になります。
PEAR については、さくらのレンタルサーバーに PEAR をインストールするも参考にどうぞ。
#-- PEAR の Mail/mimeDecode.php を読み込む require_once 'Mail/mimeDecode.php'; #-- メールデータ取得 $params['include_bodies'] = true; $params['decode_bodies'] = true; $params['decode_headers'] = true; $params['input'] = file_get_contents("php://stdin"); // 標準入力 $params['crlf'] = "\r\n"; $mail_data = Mail_mimeDecode::decode($params); #-- From フィールドの取得 $FromAddress = $mail_data->headers['from']; #-- To フィールドの取得 $ToAddress = $mail_data->headers['to']; #-- Subject フィールドの取得 $Subject = $mail_data->headers['subject']; $Subject = mb_convert_encoding($Subject,"UTF-8","JIS"); #-- 本文の取得 $MailBody = $mail_data->body; $MailBody = mb_convert_encoding($MailBody,"UTF-8","JIS");
後は、取得したデータを元に、色々処理すれば良いです。
なお、添付ファイルつきのメールの場合、本文を上記の方法で取得できないと思います。あくまでテキストメールの場合の例ですので悪しからず。
- 関連するブログ記事
-
- 現在位置
- TOP > Web制作技術 > PHP > メール受信時に PHP スクリプトを起動して自動処理させる方法
- 前のブログ記事
- 月光 [2009年4月 2日 23:33]
- 次のブログ記事
- 読んだ本、読みたい本でつながるSNS&ライフログサービス『読書メーター』 [2009年4月 4日 23:59]
コメント(7)
初めて訪問しました。
いろいろと参考になりとても面白く感じました。
プログラムを作成する知識はまったくありませんので質問したいと思います。
保育所の子供たちを相手に、数個の質問して、その回答によって、点数が出るような簡単なプログラムを探しています。
そんなのがずうずうしいですが、無償であればと探しています。
ご指導いただければ幸いです。
http://www.montedentistry.com/?9.phpOakley Eyepatch Sunglasses
Michael Kors Hamilton Malachite Green Saffiano Leather Large Tote
Michael Kors Matilda Large Shoulder Tote http://midade.com/4.php?483.html
Hello!
Hello!
Hello!
Sildenafil 100mg viagra price relaxes muscles originate in the walls of blood vessels and increases blood move to impressive areas of the body.
コメントする