• 締切済み

メールをパイプでPHPへ渡すと複数届く

レンタルサーバでキャッチオールメールのスクリプト渡しができるとの事で hoge.comへ来たメールをPHPへ渡す実験をしています。 |/(サーバパス)/public_html/test.php と設定し、test.phpには以下を記述しました。 #!/usr/bin/php -q <?php $source=file_get_contents("php://stdin"); if(!$source){ exit; } else{ //メールをファイルに保存 $logfilename="/(サーバパス)/public_html/test.txt"; $fp=fopen($logfilename,"a"); fwrite($fp,$source); fclose($fp); } そしてa@hoge.comへ送信してみると無事に保存されています。 しかし送信先として a@hoge.com,b@hoge.com とカンマ区切りで送信してみると、同じメールが2回保存されます。 3つのアドレスをカンマ区切りで送信すると3回保存されています。 同様にカンマで区切った分だけ同じ内容が保存されます。 これは普通の事なのでしょうか? OSは Linux CentOS 5 となっています。

みんなの回答

  • anmochi
  • ベストアンサー率65% (1332/2045)
回答No.2

え? 普通じゃろ。 ごめん、何が疑問? というか・・・・あなたは、どうなるべき(どういう結果になるはず)だと思う? ・1回でToをa@hoge.comとb@hoge.comの2つにしてメール送信。 ・送ったほうのメールソフトには送信済みに1通のメールが保存される。 ・(どこかの)メールサーバーでa@hoge.com宛のメールとb@hoge.com宛のメールになる。 ・a@hoge.com→キャッチオールが受け取り、/(サーバパス)/public_html/test.phpに流し込む。 ・b@hoge.com→キャッチオールが受け取り、/(サーバパス)/public_html/test.phpに流し込む。 ・同じメールが2通保存される。 という事だと思うんだけど。 1通のメールでToをa@hoge.comに、CCをb@hoge.comに、BCCをc@hoge.comにしてみても同じく3通分保存されるであろう。その時のToはa@hoge.comに、CCはb@hoge.comに、そしてc@hoge.comはどこにも書かれていないであろう。

whitebelt
質問者

お礼

私、何か根本を勘違いしていたようですね。 保存されたログのTo:にa@hoge.com,b@hoge.comとあったので 1通で来るものだと思い込んでいました。 確かにおっしゃる通りの経路を辿ると2通保存されるのが筋ですね。 実はこの後ToとFromを抽出しレスポンダーのようなものを作りたかったのですが PHPが2回起動するので対策を考えないといけないです。 ありがとうございました。

すると、全ての回答が全文表示されます。
  • t_ohta
  • ベストアンサー率38% (5320/13881)
回答No.1

a@hoge.com と b@hoge.com それぞれにメールが配信されるんだから2通保存されるのが普通じゃないでしょうか。

whitebelt
質問者

お礼

そうですよね、この挙動が正解なんですね。 ありがとうございました。

すると、全ての回答が全文表示されます。

関連するQ&A