質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

Q&A

解決済

1回答

1970閲覧

自動返信文の文字化け

mikiko.s

総合スコア14

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

0グッド

0クリップ

投稿2020/09/07 04:10

問い合わせフォームの自動返信文の文字化けについて質問します。

自分の環境では文字化けしないのですが、自動返信を受けたときに
文字化けしていますという連絡がたまにあります。

本文が文字化けしているようなのですが、
これはphp側の記述に不足があるということでしょうか。
メーラーの設定もありますでしょうか。

php内に、下記を記述しております。
ini_set("mbstring.internal_encoding","UTF-8");
mb_language("Japanese");

文字化けしているメールを添付させていただきます。
イメージ説明

自動返信のソースも記載させていただきます。

# ここから追加 # ---------------------------------------------------- 自動返信 ---------------------------------------------------- $AUTOREPLY_mar = 'reply.txt'; # 返信内容の設定ファイルのパス $AUTOREPLY_fmf = '../mailfooter.txt'; # 返信メールのFOOTER/のパス $AUTOREPLY_msg = ''; $AUTOREPLY_msg .= (is_file($AUTOREPLY_mar)) ? file_get_contents($AUTOREPLY_mar) : 'ERROR : メッセージファイルが読み込めません。'; $AUTOREPLY_msg .= (is_file($AUTOREPLY_fmf)) ? file_get_contents($AUTOREPLY_fmf) : 'ERROR : フォーマットからFOOTER.TXTが読み込めません。'; $AUTOREPLY_to = ''; $AUTOREPLY_flag = false; reset($_POST); while ($D = each($_POST)) { if ($D[1] == '' || $D[0] == 'x' || $D[0] == 'y') { continue; } if ($D[0] == 'email') { $AUTOREPLY_to = $D[1]; } # if ($D[0] == 'Emailでの連絡を希望する') { $AUTOREPLY_flag = true; } $AUTOREPLY_msg = str_replace('<<'.( $D[0] ).'>>',$D[1], $AUTOREPLY_msg); } if (preg_match('/^(.+)[\n|\r|\r\n]/',$AUTOREPLY_msg, $RegExp)) { $AUTOREPLY_sbj = $RegExp[1]; } $AUTOREPLY_msg = preg_replace('/^(.+)[\n|\r|\r\n]/','', $AUTOREPLY_msg); $AUTOREPLY_hdr = 'From:'.( mb_encode_mimeheader(mb_convert_encoding("会社名","UTF-8","AUTO")) ).'<official-info@aaaa.com>'."\r\n".'Reply-To:official-info@aaa.com'."\r\n".'X-Mailer: '.$X_Mailer; mb_send_mail($AUTOREPLY_to,$AUTOREPLY_sbj,$AUTOREPLY_msg,$AUTOREPLY_hdr,'-f'.$AUTOREPLY_to); $Message .= "\n\n------\n".$AUTOREPLY_msg; # ここまで # ---------------------------------------------------- send mail ---------------------------------------------------- $HEADERS = 'From: '.$From."\r\n".'Reply-To: '.$Reply_To."\r\n".'X-Mailer: '.$X_Mailer; mb_send_mail($To,$Subject,$Message,$HEADERS,'-f'.$To); ?>

$Messageに本文が入っているのですが、$Messageに対しての
エンコードの記述が必要でしょうか?

メールについて理解が浅く、ご教示いただけましたら幸いです。
どうぞよろしくお願いいいたします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

m.ts10806

2020/09/07 04:18

コードのインデントがあってないような形でグチャグチャですが、あえてやっているのでしょうか。そうでないならそろえる癖をつけた方が(コードフォーマット機能のついたエディタは必須です)
mikiko.s

2020/09/07 04:36

すいません。ご指摘いただき、ありがとうございます。
otn

2020/09/07 04:46

Base64エンコードされていることを指して「文字化け」と言ってるのでしょうか? それともBase64デコードした段階で化けている(UTF-8でない)ということでしょうか? 後者なら、Base64デコードした結果を載せてください。
mikiko.s

2020/09/07 05:07

添付している画像は、自動返信の受け手側がメーラーで開いたときの表示です。本来なら日本語で表示したいものなので、文字化け、と書かせていただきました。書いてくださっている意味がよくわからず、このようなお返事ですみません。。
otn

2020/09/07 05:26

ということであれば、それはエンコードされているだけで、文字化けじゃ無いです。 デコードすればいいです。 メールソフトで受信すればデコードしてくれるはずです。
mikiko.s

2020/09/08 08:10

返信遅くなり、申し訳ありません。メールソフトで受信したものが添付させていただいた画像になりまして、メールソフトで受信した時に、日本語で見れるようにしたかった次第です。
otn

2020/09/08 11:28

先頭に > が付いているからでは?
guest

回答1

0

ベストアンサー

ini_set("mbstring.internal_encoding","UTF-8");

mb_language("Japanese");

あくまで実行するPHPのエンコーディング設定であって、メール受信元のものではありません。

$Messageに本文が入っているのですが、$Messageに対しての

エンコードの記述が必要でしょうか?

いえ、メッセージそのものではなくメールヘッダに必要です。
これは「レスポンスヘッダ」の考え方として、メールに限らず覚えておいた方が良いです。

mb_send_mail()で文字化けしてしまう時の対処法
php mb_send_mail関数 outlookで文字化けする

投稿2020/09/07 04:21

m.ts10806

総合スコア80875

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

mikiko.s

2020/09/07 04:50

上記、ありがとうございます。 メールもphpも苦手で、克服したいと思っている次第です。 今回の場合は、次のように書き足せば良いのでしょうか? # ---------------------------------------------------- send mail ---------------------------------------------------- $HEADERS = "MIME-Version: 1.0\r\n" . "Content-Transfer-Encoding: 7bit\r\n" . "Content-Type: text/plain; charset=ISO-2022-JP\r\n"; $HEADERS .= 'From: '.$From."\r\n".'Reply-To: '.$Reply_To."\r\n".'X-Mailer: '.$X_Mailer; mb_send_mail($To,$Subject,$Message,$HEADERS,'-f'.$To); ?>
m.ts10806

2020/09/07 04:54

まず、やってみてください。 ただメール送信はきちんとやるには難易度が高いので「苦手で」という自覚があるのでしたらまだ手を出さない方が良いとは思います。 セキュリティ対策をきちんと施してないとスパムメールの発射台にもなりますし。
mikiko.s

2020/09/09 23:43

ありがとうございます。得意になれるよう、勉強します!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問