[PHP-dev 974]Re: mail()とmb_send_mail()の挙動の違い

Moriyoshi Koizumi moriyoshi @ at.wakwak.com
2004年 1月 11日 (日) 01:59:01 JST


小泉です。

On 2004/01/05, at 10:36, HAYAKAWA Hiroshi wrote:

> 少し迷いましたが、影響が少ないように思いましたので、
> PHP-usersではなくPHP-devの方に投稿させてもらいました。

明らかなバグでない限りは php-users に投稿してください。

> mail()とmb_send_mail()にて、挙動の違いに遭遇しました。
>
> 追加ヘッダの最終行の最後に \r\n があった場合、
> mail()では本文の先頭に空行が1行入ってしまいますが、
> mb_send_mail()では空行が入りません。
> \n だけの場合でも同様っぽいです。
> \r\n がない場合にはいずれも空行は入りません。
>
> 環境の検証は不十分なのですが、
> 4.3.4-cli, 4.2.3, 4.2.3-cgi, 4.1.2-cgi
> などで現象を確認しました。

コマンドライン版のバイナリで mail() 関数をデバッグするときは、
sendmaiL_path の php.ini 設定項目を "hexdump -c" などとするとよいです。
今後報告される際にその結果も貼付けていただけると助かります。
(hexdump がインストールされていない場合は cat でもいいです)

$ php -d sendmail_path="hexdump -c" test.php

> 個人的には最後に \r\n があっても
> 空行が入らないようになってる方がいいんですけどね。
> 実際、プログラムの修正中に空行が入るようになってしまって少し悩みました。
> もしそういう意図でmb_send_mail()の方が<先を行ってる>のでしたら
> 読み流していただければと思います。

ざっと bugs.php.net で "mail headers" という文字列で検索してみましたが、
早川さんの指摘する問題と同様のバグは見つかりませんでした。
おそらく mail() 関数の仕様でしょう。

# 実のところそう認めたくありませんが。




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