どうしても文字化けします。
ページを表示させた際にメールを送ろうと思います。ロリポップを使っています。
test.phpにアクセスした際にtest@test.co.jpさんにメールを送ろうと思います。
(test.php)
------------------------
$to="aaa@aaa.co.jp";
$subject="テスト送信";
$message="ただいまテストメール";
$add_header="From:test@test.co.jp";
$subject = urlencode(mb_convert_encoding($subject, 'sjis', 'auto')) ;
$message=urlencode(mb_convert_encoding($message, 'SJIS')) ;
var_dump(mb_detect_encoding($subject,'auto'));
var_dump(mb_detect_encoding($message,'auto'));
if(mb_send_mail($to,$subject,$message,$add_header)){
print"メール送信したよ";}else{
print"メール失敗";}
------------------------
test.phpには
------------------------
string(5) "ASCII" string(5) "ASCII" メール送信したよ
------------------------
と表示されます。つまり、ASCIIのコードになっていまいます。これが文字化けの原因かな?と思うのですが。どうやってEUCに変えればいいでしょうか?
お願いします。
■PHPでメールを送るサンプル例
http://masago.kir.jp/php20030617.php
--------------------------
$subject = urlencode(mb_convert_encoding($subject, 'sjis', 'auto')) ;
$message=urlencode(mb_convert_encoding($message, 'SJIS')) ;
ここで、urlencodeをしては駄目だったと思います。
urlencodeは、URLに対して行われるエンコードで、
メールの場合は違います。
#たぶん、コードを取るだけでOK。
メールのエンコードは
http://homepage1.nifty.com/glass/tom_neko/web/web_03.html
です。ヘッダー部分と本文とは違うエンコードがされます。
> test.phpにアクセスした際にtest@test.co.jpさんにメールを送ろうと思います。
質問文のソースを見ると、test@test.co.jpさん名でaaa@aaa.co.jpさんへ送るのですね。
ASCII になってしまっている原因は、urlencode() でしょうね。
http://jp2.php.net/manual/ja/function.urlencode.php
引数を可読可能な文字(要するにASCII)に変換してしまうわけですから。
そもそもメールを mb_send_mail() で送るのなら、urlencode() は不要です。
mb_send_mail() は、引数は内部エンコードであると解釈しますから、mb_convert_encoding($subject, 'sjis', 'auto')
と sjis に変えるのではなく、内部エンコード(質問内容からして EUC でしょうか?)にする必要があります。
すばらしいです。
ご回答ありがとうございました。
ありがとうございます!やってみます。