• ベストアンサー

メール題名の文字化け

メールを送りたいと思っています。 mb_send_mailを使っていて、メールを送れるようになったのですが、日本語の題名が文字化けして困っています。 本やサイトを見て調べているのですが、メールは文字化けのポイントが沢山あるみたいで、結局のところよくわかりません。 (他の人が解決したという手順を幾つか試してみたのですが、文字化けの文字列が変わるだけで結局ちゃんと表示されない) 結局、どういった手順でメールを送れば文字化けを防ぐことができるのでしょうか。

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

  • ベストアンサー
  • yambejp
  • ベストアンサー率51% (3827/7415)
回答No.3

ヘッダの文字数制限のため分割を行っているようなのですが mb_send_mailのバグなのか仕様なのかうまくエンコード されないようです。 ヘッダの記述など若干面倒ですがmail()関数を使うと よいようですよ。 $subject="あいうえおかきくけこさしすせそたちつてと"; $subject=mb_convert_encoding($subject, 'JIS', 'AUTO'); $subject=mb_encode_mimeheader($subject,'ISO-2022-JP',"B"); $to="you@hoge.com"; $message="テストテスト"; $message=mb_convert_encoding($message, 'JIS', 'AUTO'); $headers ="From: me@hoge.com\n"; $headers.="MIME-Version: 1.0\n"; $headers.="Content-Type: text/plain; charset=iso-2022-jp\n"; $headers.="Content-Transfer-Encoding: 7bit\n"; $headers.="X-Mailer: PHP/" . phpversion() . "\n"; mail($to,$subject,$message,$headers);

参考URL:
http://ns1.php.gr.jp/pipermail/php-users/2005-November/028161.html
moonmist
質問者

お礼

何度もご回答有難うございました。 この方法で解決しました。 mb_send_mailが曲者でしたか。。

その他の回答 (3)

  • yambejp
  • ベストアンサー率51% (3827/7415)
回答No.4

すみません、別件でソースの修正をしたので 参照ください。

参考URL:
http://oshiete1.goo.ne.jp/kotaeru.php3?q=2090001
moonmist
質問者

お礼

有難うございます。 前回のもので解決しましたが、参考にさせていただきます。

  • yambejp
  • ベストアンサー率51% (3827/7415)
回答No.2

ご提示いただいたソースで試してみましたが とくに何の問題もないようです。 OEでしたらメールのプロパティをみていただき 詳細でヘッダ情報をご覧ください。 きちんと Subject: =?ISO-2022-JP?B?GyRCJUYlOSVIJWEhPCVrQmpMPhsoQg==?= が表示されていますか? また、以下の表示はでていますか? Content-Type: text/plain; charset=ISO-2022-JP Content-Transfer-Encoding: 7bit

moonmist
質問者

お礼

プロパティは以下のような形です。 (ドコを隠すべきか知りませんが一応部分的に隠しました) その表示はあるようです。 ==================== X-Message-Status: n:0 X-SID-PRA: ---@hotmail.com X-SID-Result: SoftFail X-Message-Info: 6sSXyD95QpXcpg1FpbPSBBuhZqc4nqhWS5uBDMf9KmE= Received: from --- ([---.---.---.---]) by bay0-mc10-f1.bay0.hotmail.com with Microsoft SMTPSVC(6.0.3790.1830); Mon, 10 Apr 2006 22:02:17 -0700 Received: from unknown ([127.0.0.1] helo=---) via TCP with SMTP id mel476a9b6a705aca1a7835b0a7c3565562e1610193e; Tue, 11 Apr 2006 14:01:53 +0900 Date: Tue, 11 Apr 2006 14:01:53 +0900 Subject: =?ISO-2022-JP?B?PT9JU08tMjAyMi1KUD9CP0d5UkNK?= =?ISO-2022-JP?B?VVlsT1NWSUpXRWhQQ1ZyUW1wTVBoc29RZz09Pz0=?= To: a@hotmail.com MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Content-Type: text/plain; charset="iso-2022-jp" from: a@hotmail.com Mime-Version: 1.0 Content-Type: text/plain; charset=ISO-2022-JP Content-Transfer-Encoding: 7bit Message-Id: <---@hotmail.com> Return-Path: a@hotmail.com X-OriginalArrivalTime: 11 Apr 2006 05:02:18.0393 (UTC) FILETIME=[1B8B6090:01C65D25] ====================

moonmist
質問者

補足

特に問題無いとは、ちゃんと日本語の題名が表示されるということでしょうか。 そうするとプログラムの問題ではなく、サーバの設定かメール受信ソフトの設定の問題なのでしょうか。 localhostでもxreaにアップしても同じでした。

  • yambejp
  • ベストアンサー率51% (3827/7415)
回答No.1

mimeに変換していますか?

moonmist
質問者

お礼

はい。変換してみたり、文字コードを変えてみたり色々していますが、解決していません。 あれから試行錯誤し、現在のタイトルは =?ISO-2022-JP?B?GyRCJUYlOSVIJWEhPCVrQmpMPhsoQg==?= です。 以下のサイトにある「[11.5] メールヘッダがそのまんま表示された」という部分になり、1番解決に近い状態かと思います。 http://www02.so-net.ne.jp/~hat/imail/sec11.html OutlookExpress6を使っていますがこのソフトでは見えないものなのかそれともphpのミスなのか。。 ソースを下に載せます。 環境は最近始めたばかりでxampp(win、php4)です。 ==================== <?php mb_language("Japanese"); mb_internal_encoding ("EUC-JP"); //ヘッダ $to="a@hotmail.com"; $subject="テストメール題名"; $subject=mb_convert_encoding($subject, 'JIS', 'EUC-JP'); $subject=mb_encode_mimeheader($subject,'ISO-2022-JP',"B"); $message="テストメール本文"; $header = "from: a@hotmail.com"; //メール送信 mb_send_mail($to,$subject,$message,$header); ?>

関連するQ&A