php4.3.11のmb_sendmailで以下のように

$from=”From:” .mb_encode_mimeheader($mailfromname) .”<” .$mailfrom .”>”;
FROMの設定をして、
mb_send_mail($email,$subject,$msg,’From: ’.$from);
とするとfrom部分が化けてしまいます。
どうしたらいいでしょうか??

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

回答2件)

id:tomaton20 No.1

回答回数75ベストアンサー獲得回数0

ポイント25pt

mb_encode_mimeheaderをしなくてもいいのでは?

もしくは事前に送信前のSJISに変更すれば

問題ないはずです。

id:tech1

駄目なんですよ。

送信前に

mb_language(”Japanese”);

mb_internal_encoding(”SJIS”);

と入れているのですが完全に文字が化けてしまうんです。どうしたらいいでしょうか??

2005/11/20 13:36:20
id:shak No.2

回答回数84ベストアンサー獲得回数2

ポイント25pt

以下の項目を確認されてはどうでしょうか。

・(送信者名などがフォーム入力なら)フォームの文字エンコード

・スクリプトの文字エンコード


上の二つが一致していなければ、mb_convert_encoding()でフォームの文字コードを変換する必要があります。

PHPはデフォルトEUCで動いていたと思いますよ。


また、mb_internal_encoding(”SJIS”)を入れているなら、mb_encode_mimeheader()は必要ないです。mb_mailが自動変換してくれるので。こちらの環境で確認しました。


これは別にいいんですが、「From」が引数でも入ってて重複してますね。

(これは参考までに)

mb_detect_order(”EUC-JP”,”SJIS”,”UTF-8”);

と最初でやっておくと、mb_send_mailで自動判別してくれた覚えがあります。

id:tech1

・(送信者名などがフォーム入力なら)フォームの文字エンコード

・スクリプトの文字エンコード

はともにSJISです。

mb_detect_orderとやると下記のメッセージが表示されます。

Warning: Wrong parameter count for mb_detect_order()

どうしたらいいのでしょうか??

2005/11/20 14:59:15
  • id:shak
    すいません

    パラメータの指定を間違っていました。
    正しくは
    mb_detect_order(”EUC-JP,SJIS,UTF-8”);
    です。
    また、
    mb_detect_order(”auto”);
    でもよさそうです。

    あと、先程も書きましたが、PHPのデフォルトの内部文字エンコーディングはだいたいがEUC-JPなので、内部エンコーディングを変更する必要があると思います。

    スクリプトはSJISのままでよいですが、
    mb_internal_encoding(”SJIS”);
    をやっとくといいと思います。

    どうでしょうか。
  • id:shak
    追加:すいません

    おっと、internal_encodingやってますねー。

    上記のパラメータ変更で対応できますでしょうか?


    私はいつも内部文字エンコーディングEUC-JPで、入力をSJIS→EUCエンコーディング変換してやってます。
    それだと普通に出来るのですが…。。。

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

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

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

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