人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

Linuxでメール受信時にphpスクリプトを実行する際についての質問です。

現在、.forward ファイルにphpファイルを記述してphpスクリプトを実行しています
そして、メール送信者のアドレスを変数にいれてこのphpスクリプトで処理を行いたいと思っています。

どうすればメール送信者のアドレスを変数に格納できるのか、ご回答よろしくお願いします。

利用環境はFedora Core3上でphp4を動かし、メール送信はpostfixを使って行っています。

将来的にはRedHatEnterprizeで実行したいと思いますので、もしRedhat上で動かす際に留意点などがあればそれもあわせてお願いいたします。

●質問者: mgaki
●カテゴリ:コンピュータ
✍キーワード:Fedora Core Linux PHP postfix しR
○ 状態 :終了
└ 回答数 : 1/1件

▽最新の回答へ

1 ● lovemaker
●40ポイント

http://php.s3.to/man/

PHP マニュアル

URLはダミーです。

空メをパイプでPHPまで渡す処理は出来ているのですから、あとはPHP側のプログラムの問題です。

パイプ渡しされた内容はPHPの標準入力(STDIN)に入ってくるのはお分かりでしょうか?

それを一行ずつ見ていって(中身はメールのソースです)、From: の文字があれば、その直後のメールアドレスを抜き出します。

ごく簡単なソースを書いてみました。標準入力からメールを受取り、FROMアドレスを抜き出して表示します。

メールソースをtxtで用意して、コマンドラインでパイプ渡ししてテストしてみてください。


<?php


if( ( $stdin=fopen(’php://stdin’,’r’) )==true ){

while( !feof($stdin) ){

$line = stripslashes( fgets($stdin,4096) );

if( strpos($line,’rom:’)==1 ){

$from = str_replace(’;’,’’, substr($line,5,-1) );

list($tmp,$from) = explode(’<’,$from);

if( $from==’’ ) $from = $tmp;

else $from = str_replace(’>’,’’,$from);

$from = strtolower( trim($from) );

break;

}

}

fclose($stdin);


echo ”メール送信元は $from です。”;

}


?>

◎質問者からの返答

ありがとうございます。ばっちり解決できました。アドレス部分の小文字変換までしっかりしていただき、本当にありがとうございます。なぜ標準出力をstripslashしているのかはちょっとわからなかったのですが…

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ