メール受信時に PHP スクリプトを起動して自動処理させる方法

2009年4月 3日 19:27 メール受信時に PHP スクリプトを起動して自動処理させる方法

以前、メール受信時に perl スクリプトを起動して自動処理させる方法という記事を書きましたが、それのPHP版です。

上記のエントリでも書いていますが、メール受信時に何らかの処理を行なうプログラムを作る場合、

  1. 特定のメールアカウントにメールが届いた際に、何らかのプログラムが起動するように設定する
  2. そのプログラムを書く

という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");

後は、取得したデータを元に、色々処理すれば良いです。

なお、添付ファイルつきのメールの場合、本文を上記の方法で取得できないと思います。あくまでテキストメールの場合の例ですので悪しからず。

阿部辰也へのお仕事のご依頼・お問合せはこちら

Twitter始めました。Followはお気軽にどうぞ。

関連するブログ記事
カテゴリー
PHP
タグ
Mail_Mime | PEAR | PHP | sendmail | SMTP | UNIX | ケータイメール | コマンドライン | メール | モバイル | レンタルサーバー
現在位置
TOP > Web制作技術 > PHP > メール受信時に PHP スクリプトを起動して自動処理させる方法
前のブログ記事
月光 [2009年4月 2日 23:33]
次のブログ記事
読んだ本、読みたい本でつながるSNS&ライフログサービス『読書メーター』 [2009年4月 4日 23:59]

トラックバック(0)

このブログ記事に対するトラックバックURL:

コメント(7)

のいちご [2010年12月 9日 17:35]

初めて訪問しました。
いろいろと参考になりとても面白く感じました。

プログラムを作成する知識はまったくありませんので質問したいと思います。
保育所の子供たちを相手に、数個の質問して、その回答によって、点数が出るような簡単なプログラムを探しています。

そんなのがずうずうしいですが、無償であればと探しています。
ご指導いただければ幸いです。

Michael Kors Matilda Large Shoulder Tote [2014年9月17日 15:56]

Michael Kors Hamilton Malachite Green Saffiano Leather Large Tote
Michael Kors Matilda Large Shoulder Tote http://midade.com/4.php?483.html

generic [2015年4月10日 21:13]

Hello!

tadalafil [2015年9月11日 15:01]

Hello!

pharmacy [2015年9月11日 15:01]

Hello!

xkov64 [2017年1月14日 04:57]

Sildenafil 100mg viagra price relaxes muscles originate in the walls of blood vessels and increases blood move to impressive areas of the body.

コメントする


画像の中に見える文字を入力してください。