こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

phpのmb_send_mailで携帯のみ文字化け

PHPのmb_send_mail関数でメールを送信しています。
メールサーバーはGoogleAppsのを使っています
PHPのバージョンは5.1.6

--- 下記ソース ---
//日本語と内部文字エンコードの指定
mb_language('ja');
mb_internal_encoding('UTF-8');
$parameter = "-f hoge@example.co.jp";//return_path設定

// ↓コレだと携帯では文字化けしないが、Gmailへ送信すると文字化け
//$subject = mb_encode_mimeheader(mb_convert_encoding($subject,"JIS","UTF-8"));
$header = "";
$header .= "From: {$subject}<{$from}>";
$message = str_replace("\r", "", $message);
$res = mb_send_mail($to, $subject, $message, $header, $parameter);

投稿日時 - 2012-04-27 19:00:22

QNo.7444480

すぐに回答ほしいです

質問者が選んだベストアンサー

>mb_language('ja');
>mb_internal_encoding('UTF-8');

これが設定されているのであればmb_encode_mimeheaderは、utf-8→JISを行います。なので自前での変換(mb_convert_encoding)は入れない方が無難です。

というか、$subjectはfromに入れる(自前でJISにしている)と同時にmb_send_mailでもsubjectとして渡しています。なおさらutf-8のままでないとマズイです。

(e.g.)
mb_language('ja');
mb_internal_encoding('UTF-8');
$header = "";
$header .= "From: " . mb_encode_mimeheader($subject) . "<{$from}>";
$message = str_replace("\r", "", $message);
$parameter = "-f hoge@example.co.jp";
$res = mb_send_mail($to, $subject, $message, $header, $parameter);

なお「文字化け」は、どのメーラでどうなるといったことを基準にすると間違いの元です(メーラは自動補正して修正してくれるものが多いので)。popサーバから生のメールデータをダウンロードして中身を確認すべきです。

投稿日時 - 2012-04-27 22:57:44

お礼

お返事が遅れてしまい大変申し訳ございません。。。

とても勉強になりました。
そのまま使わせていただいたところ上手くいきました。
ありがとうございます。大変助かりました。

投稿日時 - 2012-05-12 19:50:02

ANo.1

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(1)

あなたにオススメの質問