[PHP-users 14209] PHP4.3.1のmail関数

Mera php-users@php.gr.jp
2003年 3月 24日 (月) 06:51:40 JST


こんにちは、黒木です。

 PHP4.3.1をしばらく使っていたのですが、以前に比べて不便になったなぁ
と思いつつ使用中です。 以前許されていた記述が許されなくなっていたり
と色々ありますが、それはおいておいて。

PHP4.3.1 では、mb_send_mail がどうも挙動が違うのか以前は普通に
メール送信出来ていたのですが送信すると文字化けが発生するようです。
過去ログを参照してみましたが見つからなかったので既出でしたら申し訳
ありません。

設定が以下の状態で、

mbstring.detect_order		no value
mbstring.encoding_translation	Off
mbstring.func_overload		0
mbstring.http_input		pass
mbstring.http_output		pass
mbstring.internal_encoding	none
mbstring.language		neutral
mbstring.script_encoding	no value
mbstring.substitute_character	no value

このようなサンプルを流しますと、

#!/usr/bin/php -q
<?php

$stOutputEnc   = "EUC-JP" ;
$stInternalEnc = "EUC-JP" ;

ini_set( "mbstring.http_input",           $stOutputEnc ) ;
ini_set( "mbstring.http_output",          $stOutputEnc ) ;
ini_set( "mbstring.internal_encoding",    $stInternalEnc ) ;

mb_send_mail( "sample@mail.address", "サンプル", "さんぷる" ) ;

?>

本文が何も入ってきません。直接 /var/spool/mail を覗いてみると
ものの見事に化けてしまっています。化けないのは Subject のみ
でした。

とりあえずは、mb_send_mail を使うのは止めて下記コードで回避
している状態です。

$stHeader =
"From: ".mb_encode_mimeheader( "sample@mail.address" )."\n".
"MIME-Version: 1.0"."\n".
"Content-Type: text/plain; charset=\"ISO-2022-JP\""."\n".
"Content-Transfer-Encoding: 7bit"."\n" ;

echo $stHeader."\n" ;

mail( mb_encode_mimeheader( "sample@mail.address" ), mb_encode_mimeheader( "サンプル" ), mb_convert_encoding( "さんぷる", "J
IS" ), $stHeader ) ; ;

とりあえず、報告まで。

--
Junichi Kuroki




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