メール受信をトリガーにしたPHPスクリプトの作成と基本的な処理方法
作成日:2009.04.03
PHPを用いて、メール受信をトリガーに自動処理を行うスクリプトの作成手順を解説します。PEARのMail_mimeDecodeパッケージを活用し、メールの解析と必要なデータの抽出を行う方法をご紹介します。
error この記事は最終更新日から15年以上が経過しています。
以前、メール受信時に 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");
後は、取得したデータを元に、色々処理すれば良いです。
なお、添付ファイルつきのメールの場合、本文を上記の方法で取得できないと思います。あくまでテキストメールの場合の例ですので悪しからず。
SimpleSAMLphpを使ったPHPアプリケーションのSSO対応ガイド
2025.02.11
SimpleSAMLphpを使ってPHPアプリケーションにSSO機能を追加する方法を紹介します。Microsoft Entra IDとの連携方法や、認証情報の取得方法について詳しく解説します。
Microsoft Entra IDとSimpleSAMLphpを利用したSAML認証SSO構築ガイド
2025.01.26
ローカル環境でMicrosoft Entra IDと連携したSAML認証のシングルサインオンを実現するための手順を紹介します。SimpleSAMLphpを利用した設定方法や、Microsoft側の構成変更について詳しく解説しています。
PHPで文字列をスペースで区切って配列に変換するテクニック
2025.02.09
PHPでキーワード検索を実装する際などに、文字列をスペースで区切って配列に変換する方法を解説します。全角スペースの変換や空要素の削除についても詳しく説明します。
PHPでmPDFを使ってHTMLをPDFに変換する方法
2025.02.07
PHPのライブラリmPDFを使用して、HTMLドキュメントをPDFとして出力する方法を詳しく解説します。インストールから日本語対応まで、具体的なコード例を交えて説明します。