PhP4.2 mysql4 に関して


どうしても文字化けします。
ページを表示させた際にメールを送ろうと思います。ロリポップを使っています。
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に変えればいいでしょうか?

お願いします。

回答の条件
  • URL必須
  • 1人2回まで
  • 登録:
  • 終了:2007/10/02 07:50:03
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。

回答2件)

id:KUROX No.1

回答回数3542ベストアンサー獲得回数140

ポイント35pt

■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

です。ヘッダー部分と本文とは違うエンコードがされます。

id:rrr3

ありがとうございます!やってみます。

2007/09/25 09:50:30
id:tezcello No.2

回答回数460ベストアンサー獲得回数69

ポイント35pt

> 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 でしょうか?)にする必要があります。

id:rrr3

すばらしいです。

ご回答ありがとうございました。

2007/09/25 10:07:13

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません