質問

質問者:mike_taylor フォームメール:メール受信時の文字化け
困り度:
  • 困っています
PHPを使ってForm Mailを作成しましたが、メーラーで受信する時に文字化けが起きてしまいます。そこで、シンプルなmb_send_mailを作ってみたのですがやはり文字化けしてしまします。

同様のスクリプトで過去に別のホスティングサーバーでは問題なかったのですが、現在使っているサーバーでは文字化けをしてしまいます。管理者に問い合わせたところ、サーバーには問題がないとのことでした。

---下記がそのスクリプトです---
<?php
mb_language("ja");
ini_set('mbstring.internal_encoding','EUC-JP');
ini_set('mbstring.language','ja');

$ok1 = mb_send_mail("xxx@xxx.com","Contact Form via website","Line 1\nLine 2\nLine 3\nこれは日本語のテストです。");

if($ok1)
{
// mail sent ok
echo'<p align="center" class="text12b"><b>Mail sent ok.</b></p>';
}
else
{
// error sending mail
echo'<p>Error sending mail.</p>';
}
?>

---受信したメール---
Line 1
Line 2
Line 3
\$B\$3\$l\$OF|K\\8l\$N%F%9%H\$G\$9!#

---受信したメールのContent-Type---
Content-Type: text/plain; charset=ISO-2022-JP

---PHP Version---
PHP Version 4.3.11

解決策がご存知の方がおられましたら、知恵を貸してください。よろしくお願いいたします。
質問投稿日時:05/07/04 18:02
質問番号:1491464
この質問に対する回答は締め切られました。
最新から表示回答順に表示良回答のみ表示

回答

良回答10pt

回答者:namnam6838 はずしているかもしれませんが
スクリプトがshift-jisで書かれているのではないでしょうか。
EUCで書いて、ftpでもEUCでアップしたらうまくいきました。
種類:回答
どんな人:一般人
自信:参考意見
回答日時:05/07/04 18:15
回答番号:No.1
この回答へのお礼返答ありがとうございます。
ScriptはEUCで書いてるんですよね・・・。
なのでForm以外は化けてません・・・。

回答

良回答20pt

回答者:kuny2005 mb_language("ja");
ini_set('mbstring.internal_encoding','EUC-JP');
ini_set('mbstring.language','ja');

↑の部分を

mb_language("ja");
mb_internal_encoding("EUC-JP");

↑にしても同じでしょうか?

それでも文字化けがするなら「.htaccess」ファイルを作成し、以下を書いて

php_value mbstring.encoding_translation On
php_value mbstring.internal_encoding EUC-JP
php_value mbstring.http_output EUC-JP
php_value mbstring.script_encoding EUC-JP

スクリプトと同じディレクトリにアップロードしてもだめでしょうか?
種類:回答
どんな人:一般人
自信:参考意見
回答日時:05/07/04 22:04
回答番号:No.2
この回答へのお礼返答ありがとうございます。

mb_language("ja");
mb_internal_encoding("EUC-JP");

上記だとダメでしたが、

".htaccess"だとうまくいきました!!
本当に助かりました。実は数週間ほどこのCodeと格闘してまして解決の糸口がみつけられず困っていました。

ついでに教えていただいたCodeでちょっと遊んでみたところ、
下記のCodeでも問題なく表示できました!!
※.htaccessは不要

ini_set('mbstring.internal_encoding','EUC-JP');
ini_set('mbstring.http_output','EUC-JP');
ini_set('mbstring.script_encoding','EUC-JP');

知恵を貸していただき、ありがとうございました。
最新から表示回答順に表示良回答のみ表示