[PHP-dev 1188] Re: PHP4.4.1でmb_send_mailの第5引数が利かなくなってる

Tomoyuki Asakawa tom @ asakawa.ne.jp
2005年 11月 6日 (日) 14:06:38 JST


あさかわ
> 3番目は、本当にやるべきなのかも含めて少し面倒な話かもしれませ 
> ん。

この件の関連だと思うのですが。
http://xoopscube.jp/modules/xhnewbb/viewtopic.php?topic_id=758&forum=5
ここに。
 >$encoded = mb_convert_encoding((phpversion() == "4.4.0" ? "\n" : 
"").$str, _CHARSET, mb_detect_encoding($str));
 >として、4.4.0なら先頭に改行を入れて試たところ化けなくな 
りました。
 >なぜ化けなくなったのか、また他の問題が発生する可能性なども不明 
です。
という、なんか妙な解決方法がでていました。
最終的には
以下の関数を作成して対処してる模様です。
 function encode_header ($str, $position = 'text', $force=false) {
 $encode_charset = 'ISO-2022-JP';
 if (function_exists('mb_convert_encoding')) { //Use 
mb_string extension if exists.
 if ($this->needs_encode || $force) {
 $str = mb_convert_encoding($str, $encode_charset, 
mb_detect_encoding($str));
 $i = 0;
 $encoded ='';
 $cut_length = floor((76-strlen('Subject: =?'. 
$encode_charset.'?B?'.'?='))/4)*3;
 while($i < strlen($str)) {
 	$partstr = mb_strcut ( $str, $i, $cut_length, 
$encode_charset);
 	if ($i) $encoded .= "\r\n ";
 	$encoded .= '=?' . $encode_charset . '?B?' . 
base64_encode($partstr) . '?=';
 	$i += strlen($partstr);
 }
 } else {
 $encoded = $str;
 }
 } else {
 $encoded = parent::encode_header($str, $position);
 }
 return $encoded;
 }


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

AltStyle によって変換されたページ (->オリジナル) /