はじめまして、ベトナムのCuongです。
以下の関数で日本語のメールを送信しますが、どうもoutlook等のメーラーは問題なく閲覧できますが、ウェーブメールで見ますと、件名は正常に日本語を表示してますけれども、本文にはそのままbase64でエンコードされた文字列を複合化されずにそのまま出力されています。
只今私はさじを投げておりますが。具体的にどのように修正できるかを教えていただければと思っております。
ありがとうございます。
===============================
private static function _sendPc( $from, $to, $subject, $body, $contentType, $charSet="shift_jis", $header="", $parameter=""){
Debugger::snap();
//make header
$headers = "From: $from\n";
$headers .= "MIME-Version: 1.0\n";
$headers .= "Content-type: $contentType; charset=ISO-2022-JP\n";
//$headers .= "Content-type: $contentType; charset=SHIFT_JIS\n";
//$headers .= "Content-Transfer-Encoding: base64";
$headers .= "Content-Transfer-Encoding: quoted-printable";
// add header to mail
if( strlen( $header ) > 0 ){
$headers .= "\n";
$headers .= $header;
}
//make parameter
$parameters = $parameter;
//make subject
$subject = '=?ISO-2022-JP?B?'.base64_encode(mb_convert_encoding($subject, 'ISO-2022-JP', 'AUTO' )).'?=';
//$subject = '=?SHIFT_JIS?B?'.base64_encode($subject).'?=';
//$body = base64_encode($body);
$body = mb_convert_encoding( $body, 'ISO-2022-JP', "AUTO");
// a,b@mail.com こんなEMAILアドレスがたまにあるための回避策
$pos1 = strpos($to, ",");
$pos2 = strpos($to,"<");
if( $pos1 !== FALSE && $pos2 === FALSE ){
$to = "<" . $to .">";
}
if( $parameters != null && strlen( $parameters ) > 0 )
mail( $to, $subject, $body, $headers, $parameters );
else
mail( $to, $subject, $body, $headers,"-f" . $from );
Debugger::debug( "sended" );
return true;
}