2011.
06.
13
22:37:21
自分とこのサーバに「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は「すたんだーどあいおー」ね。
「すたじお」とか読まないよーに。
見慣れないディレクトリがありましてね。
なんだっけなー、これ(-公-;
・・・あぁ、そうだ。空メール送信で自動登録やった時の奴だ。
と思い出したは良いもののどーやって使うんだったか
すっかり忘れていたので備忘録代わりにメモっておきます。
ちなみに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は「すたんだーどあいおー」ね。
「すたじお」とか読まないよーに。