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

締切り済みの質問

フォームメールでタイトルが文字化けする

こちらのサイトにある
http://www.sapphirus.biz/php/sformmail/
フォームメール1というものを利用して確認画面つきのフォームを作成しております。


こちらのサイトでダウンロードしたものをデフォルトで利用すると
ユーザーに対する自動返信メールに
sformmail.php内の設定項目に記述したメールアドレスが
メールの送信者の所に表示されて返信されてきます。


/ 設定
$mail_to = 'XXXXXXXXXXXX'; // フォームデータを受け取るメールアドレス
$mail_subject = 'S.B.フォームメール送信'; // 受け取る時のSubject(件名)
$reply_subject = 'S.B.フォームメールより自動返信です'; // 送信者へ自動返信のSubject(件名)
$mail_bcc = ''; // BCCで受け取りが必要な場合は設定
$internal_enc = 'UTF-8'; // 文字エンコード


送信者のところにメールアドレスだけでなく、
日本語名も追加して自動返信メールを使いたかったため、
sformmail.php内の

// メール自動返信
if ($_SESSION['autoReply'] && $_SESSION['email'] && is_file('reply.php')) {
$reply_header = "From:{$mail_to}\n";
if ($mail_bcc) $reply_header .= "Bcc: {$mail_bcc}\n";
$reply_header .= "X-Mailer: {$x_mailer}";
include ('reply.php');
$reply_message = html_entity_decode($reply_message, ENT_QUOTES, $internal_enc);
$reply_message = str_replace("<br />", "", $reply_message);
$reply_message = str_replace("\t", "\n", $reply_message);
$reply_message = mb_convert_encoding($reply_message, $internal_enc, 'AUTO');
mb_send_mail($mail_from, $reply_subject, $reply_message, $reply_header);
}

にある
$reply_header = "From:{$mail_to}\n";を
$reply_header = "From:{YYYYYYY}{$mail_to}\n";
と変更しました。


結果、Gメールでメールを受け取ると送信者欄にYYYYYYYとメールアドレスが表示されるのですが
メーラーによってYYYYYYYの部分が文字化けしてしまいます。


色々と調べておりましたら文字コードが
$internal_enc = 'UTF-8'; // 文字エンコード
という設定がありますが
$reply_header = "From:{YYYYYYY}{$mail_to}\n";
に反映できていないのが問題と見受けられますが
修正方法がわかりません。

当方CGIの知識がないため、ご教示いただければ幸いです。

投稿日時 - 2013-03-13 01:38:26

QNo.7990702

すぐに回答ほしいです

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

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

回答(1)

ANo.1

メールヘッダには日本語は(そのままでは)使えません。mimeエンコードする必要があります。mb_encode_mimeheaderを使えばmb_internal_encodingの文字セットからmb_languageで適切な文字セット('ja'ならiso-2022-jp)に変換してmimeエンコードするまでを一括して行います。

http://php.net/manual/ja/function.mb-encode-mimeheader.php

#プログラムでメールを扱うならメール関連のRFCを一読してください。

see.
http://www.phppro.jp/qa/3986

投稿日時 - 2013-03-13 10:18:06

あなたにオススメの質問