phpからメール送信の方法を調べました。
技術ブログのPHPで日本語メールを送る - 基本編を参考にさせていただくと、以下のようにソースが記述されていました。
//言語設定、内部エンコーディングを指定する
via:PHPで日本語メールを送る - 基本編
mb_language("japanese");
mb_internal_encoding("EUC-JP");
//日本語メール送信
$to = "katou@example.com";
$subject = "例の件について";
$body = "どうでしょう?";
$from = "masaki@example.com";
//ちゃんと日本語メールが送信できます
mb_send_mail($to,$subject,$body,"From:".$from);
さっそく、何の疑いも持たずに、上と似たようなソースを作って送信してみると、文字化けが??
もともと、文字化けを回避する目的で、mb_language("japanese")と、mb_internal_encoding("EUC-JP")を入れたのに。
おそらく、mb_internal_encoding("EUC-JP")がEUC-JPなので、これをutf-8に変えて、もう一度、試してみると、やはり文字化けが解消されました。
window live mail(hotmail)や、gmailでメールを受信しましたが、やはり文字化けが起きていませんでした。
(上のケースではどちらも実行環境は、firefox2です。)
でも、なんで、EUC-JPだと文字化けを起こすのかなーと考えてみると、ソース全体のエンコードが、utf-8なので、そこに突如、EUC-JPが登場したため、エンコードがあわずも文字化けが発生したものと思われる。
ここら辺は、文字コードという複雑な問題を扱っているので、間違っているようならコメントをしていただけたらなと。
0 コメント:
コメントを投稿