[PHP-users 19519]mail()関数の追加パラメータのバグ?(4.3.4)

HAYAKAWA Hiroshi hayakawa @ sam.hi-ho.ne.jp
2003年 12月 23日 (火) 10:39:15 JST


早川@名古屋 です。

バグか仕様か分かりませんが、
PHP4.3.4のCLIのmail()関数で下記のような挙動をみつけました。

追加パラメータの指定の際、
$mail_params = "-f anybody @ example.com\n";
のように最後に改行コードがついていると
sh: -c: line 3: syntax error: unexpected end of file
というエラーになりました(メールは送信されません)。
改行コードがついていなければエラーになりません。

プログラムはシェル(bash)より
./phptest.php
というかたちで実行しています(on Vine2.6r3)。

configureオプションは、
./configure --enable-cli --disable-cgi --enable-mbstring
--enable-zend-multibyte --with-pgsql=/usr --without-mysql
--with-zlib --with-openssl --enable-sockets --enable-iconv

php.iniは、PHP4.3.4のソースのデフォルトの状態から
display_errors = On
variables_order = "EGPCS"
mbstring.language = Japanese
のみ変更しました。

追加パラメータの-fの後の空白はあってもなくても同様に発生します。
追加パラメータがない場合には普通に送信されます。
mb_send_mail()関数では同様の現象は発生しませんでした。
また、4.1.2や4.2.3のCGI版では発生していませんでした。
4.3.4のDSO版はまだ使っていないので未確認です(発生しそう)。

http://jp.php.net/manual/ja/function.mail.php
には、
「注意: toまたはsubjectに 改行文字を含まないようにして下さい。
さもないと、正常に動作しない 可能性があります。」
というただし書きがありますが、
これと同じでしょうか。

http://jp.php.net/manual/ja/function.mb-send-mail.php
の方には同じ注意書きはないようですね。


 * * *


以下は余談です。

mb_send_mail()のJIS変換が半角カナを扱ってくれない(?に変換される)ので、
h2_send_mail()というオリジナルラッパー関数を作成して、
(h2_は自作関数につけているprefix)

$subject = mb_encode_mimeheader($subject, "JIS", "EUC-JP");
$message = mb_convert_encoding($message, "JIS", "EUC-JP");
$headers = $coreheader;
$headers .= "Content-Type: text/plain; charset=\"ISO-2022-JP\"\r\n";
$headers .= "Content-Transfer-Encoding: 7bit\r\n";

mail($to, $subject, $message, $headers, $params);

のような感じで変換してmail()関数でメール送信しています(携帯向け)。
(エスケープシーケンスとしてESC(Iが用いられる)

※ ちなみに変換したものをmb_send_mail()で送信しても二度変換はされません。

※ いまは前述の現象対策として、
   $message以外一旦trimして必要な改行コードを追加するようにしました。

半角カナは厄介なものの一つですが、
携帯で半角カナが普通に使用されてしまっている現在、
mb_send_mail()でも半角カナを扱えた方がよくないでしょうか?
標準もしくは何らかの設定があった場合、というようなかたちで。

ややこしい問題なので、なにか事情があって
mb_send_mail()ではあえて扱えないようにしてあるのかもしれませんけども。

また、このあたりの実装の詳しい仕様を
マニュアルに記述していただけるといいのではないかと思いました。
mb_send_mail()がすでに変換されている要素には何もしない?なども含めて。


先頭の現象は、使用しているコマンドライン版のバージョンを
4.1.2から4.3.4に上げようとテストしていて遭遇しました。


-----
With your dreaming, with your smile.
Hayakawa, Hiroshi <hayakawa @ sam.hi-ho.ne.jp>
Nagoya,Aichi,JAPAN ☆彡



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