[PHP-users 15436]Re: メール受信時の自動処理について

Tatsuya Kondo konet @ zc.wakwak.com
2003年 5月 22日 (木) 02:40:34 JST


近藤と言います。

あれから色々とやってみた所、プログラムにデータを渡す事が出来ました。

一応、同じ悩みの方の為に説明しますと、
まず、hoge.jpと言うドメインで説明します。
また、このドメインでメールアドレスは1つも作成しておりません。

さて、vpopmailを使用していますので、
/home/vpopmail/domains/ユーザー名/ドメイン名/.qmail-default
に、
|/usr/local/bin/php -q /home/user/mail.php
と、1行だけ記述しました。
----------- mail.php ---------------
$fp = fopen("php://stdin", "r");
while(!feof($fp))
{
    $buffer .= fgets($fp, 4096);
}
fclose ($fp);

$fp = fopen("maildate.txt", "w");
fputs($fp, $buffer);
fclose ($fp);
----------------------------------
と、書いておき、実際に、
(任意の文字列)@hoge.jp(存在しないメアドです)宛にメールを送った場合、
ヘッダも含め、maildate.txt に記述する事が出来ました。

# もちろん本文などはエンコードしてない為、文字化けしてます。

そこで、今度はヘッダと本文を別けたくて、適当な場所に、
list($head, $body) = split("\r\n\r\n", $buffer, 2);
を記述しました。
しかし、結果は別ける事が出来ませんでした。

普通に考えて処理的、文法的には合ってると思い、
正規表現の部分が悪いと考え、
list($head, $body) = split("\n\n", $buffer, 2);
としたら、期待通りの動作をしました。

実は、
list($head, $body) = split("\r\n\r\n", $buffer, 2);
と言う処理は、
http://php.s3.to/bbs/bbs7.php
のソースを参考にさせて頂きました。m(_ _)m

そこでご質問です。
同じSJISでソースを書いて、同じ環境で動作チェックを行ったのに、
なぜ、split("\r\n\r\n", $buffer, 2); では別ける事が出来なかったのでしょうか?

改行コードが違うから・・・と言われればそれまでですが、
メール送信をするソフトによって改行コードは変わるのですか?

実際の所、どうなのでしょうか?


PHP-users メーリングリストの案内