dポイントプレゼントキャンペーン実施中!

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

結局、どういった手順でメールを送れば文字化けを防ぐことができるのでしょうか。

A 回答 (4件)

ヘッダの文字数制限のため分割を行っているようなのですが


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-No …
    • good
    • 0
この回答へのお礼

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

mb_send_mailが曲者でしたか。。

お礼日時:2006/04/11 17:57

すみません、別件でソースの修正をしたので


参照ください。

参考URL:http://oshiete1.goo.ne.jp/kotaeru.php3?q=2090001
    • good
    • 0
この回答へのお礼

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

お礼日時:2006/04/18 13:20

ご提示いただいたソースで試してみましたが


とくに何の問題もないようです。
OEでしたらメールのプロパティをみていただき
詳細でヘッダ情報をご覧ください。

きちんと
Subject: =?ISO-2022-JP?B?GyRCJUYlOSVIJWEhPCVrQmpMPhsoQg==?=
が表示されていますか?

また、以下の表示はでていますか?
Content-Type: text/plain; charset=ISO-2022-JP
Content-Transfer-Encoding: 7bit

この回答への補足

特に問題無いとは、ちゃんと日本語の題名が表示されるということでしょうか。

そうするとプログラムの問題ではなく、サーバの設定かメール受信ソフトの設定の問題なのでしょうか。
localhostでもxreaにアップしても同じでした。

補足日時:2006/04/11 16:12
    • good
    • 0
この回答へのお礼

プロパティは以下のような形です。
(ドコを隠すべきか知りませんが一応部分的に隠しました)
その表示はあるようです。

====================

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]
====================

お礼日時:2006/04/11 14:28

mimeに変換していますか?

    • good
    • 0
この回答へのお礼

はい。変換してみたり、文字コードを変えてみたり色々していますが、解決していません。

あれから試行錯誤し、現在のタイトルは
=?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);
?>

お礼日時:2006/04/11 00:57

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!