mb_send_mailで送信した内容が文字化けするという問題に悩んでいます。
送信前に
mb_language('ja');
mb_internal_encoding('UTF-8');
を記述しています。
この記述ししてから、
送信文章やヘッダーを組み立て、mb_send_mailで送信しています。
mb_send_mailを実行しているphpファイル自体は、UTF-8(BOM付き)です。
フォームから必要項目を入力して、submitすると、指定のphpファイルでPOSTデータが読み込まれ、内容がMySQLにセットされた後、フォームに入力されたメールアドレスに、登録完了メールが飛ぶという、よくある仕組みです。
このプログラムを、自分のレンタルしているサーバー(ロリポップサーバー ライトプラン)で構築し、きちんと文字化けも無く実行できる状態のファイルを、そのままお客さんのサーバー(同じくロリポップサーバーのライトプラン)にアップロードしたところ、文字化けになりました。
文字化けの内容は、
phpファイル内で書かれた文字が全て?で置き換わるというものです。
ちなみに、自分のサーバーのphpファイルをSJISやEUCに変えたところ、文字化けはするのですが、お客さんのサーバーで発生しているような、全部?で置き換わるような文字化けにはなりませんでした。
ちなみに、お客さんのサーバーにアップしたphpファイルの文字コードを、EUCやSJISに変えてもらっても、結局送信メールの文字は、全て?という状態で、自分のサーバーの時のように、文字コードを変えるごとに、文字化けの感じが変わるような事はありませんでした。
何故か、フォームから入力されたデータは、
全角文字であっても、文字化けしません。
このような現象なのですが、
なにせ、お客さんと同じサーバーで、
同じプランでも、自分のサーバーで実行させると、
文字化けしないため、どこをどう調査したらいいのかがわからない状態です。
このような状態なのですが、調査するとしたら、
後は、サーバーのPHPのバージョンや、
php.iniの内容くらいでしょうか?
見たら、自分のサーバーのphpのバージョンは、5.5(CGI版)なのですが、お客さんのサーバーは、お客さんに見てもらったろところ、5.2~5.3と記載されているとの事でした。
こんなところが関係するのでしょうか?
また、php.iniをキャプチャして送ってもらったところ、php.iniの内容については、自分のサーバーと同じでした。
今、私は、このような文字化けに対し、今、どこに問題があるのかが分からずに困っています。
サーバーのphpのバージョンなのか、php.iniの設定なのか、ファイルの文字コードなのか、プログラムのエンコードの仕方なのか。。。
長文すみません。
何かヒントとなるような事だけでも、ご存知の方がいらっしゃいましたら、ご教授頂けますと助かります。
どうか、よろしくお願い致します。
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2015/12/17 14:00
2015/12/17 14:17
2015/12/17 15:07