プログラミング言語や環境設定を中心としたパソコン関連の技術メモです。
主にシステム開発中に調べたことをメモしています。TIPS的な位置付けで、気が向いたときにちまちま更新していきます。
PHP、メール受信でスクリプト起動(qmail)。
自分とこのサーバに「mail_test」なんて
見慣れないディレクトリがありましてね。
なんだっけなー、これ(-公-;

・・・あぁ、そうだ。空メール送信で自動登録やった時の奴だ。

と思い出したは良いもののどーやって使うんだったか
すっかり忘れていたので備忘録代わりにメモっておきます。

ちなみにqmail環境でPHP5です。

0.「PEAR::Mail」「PEAR::Mail_Mime」を
  あらかじめインストールしておくと便利。

1.「.qmail」ファイル編集。
  私の環境だと「/home/アカウント名/.qmail」。
  以下の記述を追加。

|/usr/bin/php /home/うんちゃらかんちゃら/mail_test/mailtest.php

2.「/home/うんちゃらかんちゃら/mail_test/mailtest.php」の中身は以下の通り。


<?php

$logFileName = dirname(__FILE__) . '/mailtest.log';
//ファイル書き込み
$fp = @fopen($logFileName, "a");
@fputs($fp, "start");
@fclose($fp);


#-- 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'];
$FromAddress = mb_convert_encoding($FromAddress,"UTF-8","JIS");

#-- 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");


//ファイル書き込み
$fp = @fopen($logFileName, "a");
@fputs($fp, $FromAddress . ',' . $ToAddress . ',' . $Subject);
@fputs($fp, $MailBody);
@fclose($fp);

?>


qmailだったりsendmailだったりサーバの環境だったりで設定方法は違いますが
要するに、メール受信をトリガーにPHPスクリプト起動(1.)して
そのスクリプトの中でメールの中身を解析(2.)ってな流れです。

$params['input'] = file_get_contents("php://stdin");

で標準入力(すたんだーどいん)から受け取ってます。
余談ですがstdioは「すたんだーどあいおー」ね。
「すたじお」とか読まないよーに。
スポンサーリンク
 
このエントリーをはてなブックマークに追加 

category:● PHP  thema:システム開発 - genre:コンピュータ  Posted by ササキマコト 

  関連記事