2008年10月8日 水曜日の記録
メルマガ登録のPHPプログラムを前に作ったんだけど、
バグが見つかっちゃった
ソフトバンクでメール文字化け(本文、件名とも)
(メルマガを登録してもらったときに「登録ありがとう」的なメールを送るんだけど、
それが文字化けね)
出たー文字化け
調べて見ると、ヘッダー情報をちゃんと入れないと
正しく送れないって
MIME-Version 1.0
Content-Type text/plain; charset=”iso-2022-jp”
Content-Transfer-Encoding 7bit
入れてみた▼
文字化け、直らず・・・
やっぱり、文字化けと言ったら
エンコード
メールのエンコードと言ったら「jis」って訳で
mb_language(“japanese”);
mb_internal_encoding(“jis”);
これを書いてみた。
そしたら、本文、件名ともに日本語の部分ってなりました
泣きたくなった。
とあるサイトには、ソフトバンクにはSJISだって書いてあるのを見つけたので、
思い切って本文をSJISにして送ってみた
そうしたら、本文の文字化け直ったー!!!
だけど、
「それだと、他のキャリアで化けるよ」って
どうしたらいいのさー!!!って思ったら、
サンプルプログラムを送ってくれたー!
さらに助言として、メールに関わる、全てのエンコードをJISであわせないと駄目だって!
サンプルプログラムはこちら▼
<php
$main_message = <<< mail_body
TEST
テスト
mail_body;
mb_language(“japanese”);
mb_internal_encoding(“jis”);
$message=mb_convert_encoding($main_message,”jis”,”sjis”);
$subject=mb_convert_encoding(“TEST テスト”,”jis”,”sjis”);
mb_send_mail(“test@test.com” , $subject , $message , “from:
test@test.com”);
echo <<< page
<!DOCTYPE html PUBLIC “-//W3C//DTD XHTML 1.0 Transitional//EN”
“http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd”>
<html xmlns=”http://www.w3.org/1999/xhtml” xml:lang=”ja” lang=”ja”>
<head>
<meta http-equiv=”content-type” content=”text/html;charset=utf-8″ />
<title>TEST TEST</title>
</head>
<body>
TEST OK
テストOK
</body>
</html>
page;
>
ここまでしてもらっといて、
まだ完成しない・・・
プログラムはSJISファイルで、
DBはEUC-JP
どっかで、エンコードがあってない。。。
最終的には
header(“Location:mail.php”);
exit;
で、単独PHPに飛ばして、
そのファイルはSJIS。
後は上記のコードに本文、件名、FROM TOを当てはめて
なんとか文字化けが直った・・・・・。
要するに、
本文・件名・FROM・TO・メールheader情報
全てのエンコードをなんとか「jis」でそろえたら、
文字化けは直ったのでした
疲れた
コメント