[PHP-users 8325] PHP4.2.1とPHP4.1.2でのmb_send_mail関数について
HIRANO Nobuaki
php-users@php.gr.jp
Thu, 27 Jun 2002 14:17:36 +0900
平野と申します。
【環境】
OS:Redhat7.2
PHPのスクリプトはShift_JISで書かれています。
php.iniでのmb関係の設定は以下の通りです。
------------------------------------------
output_buffering = On
;output_handler = mb_output_handler ← 諸事情により設定していません
default_charset = Shift_JIS
mbstring.http_input = pass
mbstring.http_output = pass
mbstring.internal_encoding = Shift_JIS
mbstring.substitute_character = none
------------------------------------------
【質問】
PHP4.2.1とPHP4.1.2でのmb_send_mail関数の動作で
一行が990バイト(?)以上あった場合の動作についてお伺いしたいと思います。
今回PHP4.1.2からPHP4.2.1にバージョンをあげたことによって
メールを送信するようなプログラムで、mb_send_mail関数を使っていたのですが
一行が990バイト付近から文字化けを起こすようになりました。
切り分けるために、バージョンごと、関数ごとで調べた結果以下の通りになりまし
た。
実験:一行に1000バイトの文字を入れてmb_send_mail関数およびmail関数で、
その文章を送信する
PHP4.1.2
mb_send_mail関数:そのまま送れる(2000バイトでもOK)
mail関数:そのまま送れる(2000バイトでもOK)
PHP4.2.1
mb_send_mail関数:990バイト付近から強制的に改行され文字化けする
mail関数:990バイト付近から強制的に改行されるが文字化けしない。
ただし2000バイトの文字を送信した場合、1980バイト付近で改行
された
次の行の1文字目が文字化けする。
いろいろ調べていると以下のような制限がRFCにてあることに気がつきました。
・一行の文字数制限などもある(RFC 821 で一行1000文字以内に制限)
PHPのメール送信関係の関数で一行の文字数制限を準拠するようになったのか、
その辺の情報を検索してみたのですが見当たりませんでした(-_-;
そもそもRFCで決まっているので、一行にそれほどの文字数が入ってしまう
ようなプログラムを作っちゃだめなんでしょうが…。
どなたか、この辺の動きに関してご存知の方いらっしゃいましたら
ご教授願いたいと思います。
#ちなみに受信したメーラーはOutlook、mule、フリーのWebメールで
#確認してますが、すべてにおいて文字化けしてます。
よろしくお願い致します。