Hajime Yamamoto
yamam****@ytw*****
2005年 12月 2日 (金) 18:20:39 JST
山本と申します。 標記の件、Xoops のサイトで 暫定修正版 xoopsmailerlocal.php が 公開されています。 http://xoopscube.jp/modules/xhnewbb/viewtopic.php?topic_id=758&forum=5&post_id=3943#forumpost3943 で、上記の暫定修正版を参考に osCommerce 用の関数を作って みました。 以下のコードを catalog/includes/functions/general.php と admin/includes/functions/general.php の最後に追加します。 //---- ここから ------- function tep_encode_mimeheader($str, $encode_charset, $transfer_encoding, $linefeed) { if (function_exists('mb_convert_encoding')) { $str_encoding = mb_detect_encoding($str, 'EUC-JP,ASCII,'.$encode_charset ); if ($str_encoding == 'ASCII') { return $str; } else if ($str_encoding != $encode_charset) { $str = mb_convert_encoding($str, $encode_charset, $str_encoding); } $cut_start = 0; $encoded =''; $cut_length = floor((67-strlen('=?'.$encode_charset.'?B?'.'?='))/4)*3; while($cut_start < strlen($str)) { $partstr = mb_strcut ( $str, $cut_start, $cut_length, $encode_charset); $partstr_length = strlen($partstr); if (!$partstr_length) break; if ($encode_charset == 'ISO-2022-JP') { if ((substr($partstr, 0, 3)===chr(27).'$B') && (substr($str, $cut_start, 3) !== chr(27).'$B')) { $partstr_length -= 3; } if ((substr($partstr,-3)===chr(27).'(B') && (substr($str, $cut_start+$partstr_length-3, 3) !== chr(27).'(B')) { $partstr_length -= 3; } } if ($cut_start > 0) $encoded .= "\r\n\t"; $encoded .= '=?' . $encode_charset . '?B?' . base64_encode($partstr) . '?='; $cut_start += $partstr_length; } } else { $encoded = $str; } return $encoded; } //------ ここまで --------------- それから、catalog/includes/classes/email.php と admin/includes/classes/email.php の md_encode_mimeheader を tep_encode_mimeheader に変更します。 変更箇所はそれぞれ3箇所です。 改行やタブは必要ありません。 --