2008/11/18

[php]メール送信

phpからメール送信の方法を調べました。
技術ブログ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);

via:PHPで日本語メールを送る - 基本編

さっそく、何の疑いも持たずに、上と似たようなソースを作って送信してみると、文字化けが??

もともと、文字化けを回避する目的で、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 コメント:

コメントを投稿