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


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

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

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

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

回答の条件
  • URL必須
  • 1人2回まで
  • 登録:2006/01/07 19:10:10
  • 終了:--

回答(1件)

id:lovemaker No.1

lovemaker回答回数59ベストアンサー獲得回数12006/01/07 19:39:56

ポイント40pt

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 です。”;

}


?>

id:mgaki

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

2006/01/08 00:05:59

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません