
No.2ベストアンサー
- 回答日時:
真ん中下あたりの
>$s_msg = mb_convert_encoding($s_msg,"JIS","SJIS");
ここでJISコードに変換しているにも拘らず、その下の
>$s_msg = stripslashes($s_msg);
で本来は必要な'\'を取り除いてしまっているのです。
「本」のJISコードは0x4b5c、つまり"K\"ですから当然コードが変化してしまいます。
送信者名が化けないのは、この処理を$from対して行っていないためです。
変数内の文字コードと文字列の状態を理解しながらプログラミングすると良いでしょう。
それと、マルチバイトメール送信関数
>mb_send_mail($sendto, $subject, $s_msg, $from);
では、本文及び標準のヘッダに含まれるSubjectは"内部文字エンコードで渡し"ます。
追加ヘッダ($from)は"メール用にエンコード"した上で、適切なフォーマットで渡します。
追加ヘッダのエンコードにはmb_encode_mimeheader()を使えば、メール向けの適切なフォーマットで返してもらえます。
参考URL:http://jp2.php.net/manual/ja/function.mb-send-ma …
ありがとうございます。数日前にこれに気づき解決いたしました。
でもひとつひとつ関数の意味を理解していなかったのでnataruyさんのご回答でなぜそうなったのかようやく意味がわかりました。本当にありがとうございました。
No.1
- 回答日時:
どういう処理をいれているのでしょうか?
送信者や件名などはISO-2022-JP形式、
本文は7bitJIS形式にきちんと変換していますか?
この回答への補足
早速のご回答ありがとうございます。
以下の内容でメール送信しています。ちなみにこの上でfopenでlogを残していますがそちらには文字化けせず残されているのでメール送信用プログラム内で何か追加しなければいけないんだと思いますが、調べていても答えがみつかりません。お願いします。
//----------------ここから管理者宛にMAIL送信------------------------//
$subject="お問い合わせがありました!";
$subject=mb_convert_encoding("$subject","JIS","SJIS");
$subject=mb_encode_mimeheader($subject);
//表・予・申・能・十・ソなど特殊漢字の後につく\マークを削除
$content = stripslashes($content);
$name = stripslashes($name);
$s_msg="以下の内容でお問い合わせ・資料請求がありました。
迅速な対応をお願いいたします。\n
_/ ̄_/ ̄_/ ̄_/ ̄_/ ̄_/ ̄_/ ̄_/ ̄_/ ̄_/ ̄_/ ̄_/ ̄_/ ̄_/ ̄_/ ̄_/ ̄_/ ̄_/ ̄_/ ̄\n
■お名前:${name}
■ふりがな:${name2}
■メール:${e_mail}
■生年月日:${birth_year}年${birth_month}月${birth_day}日
■お問い合わせ:\n${content01}\n
_/ ̄_/ ̄_/ ̄_/ ̄_/ ̄_/ ̄_/ ̄_/ ̄_/ ̄_/ ̄_/ ̄_/ ̄_/ ̄_/ ̄_/ ̄_/ ̄_/ ̄_/ ̄_/ ̄\n
|お問い合わせフォーム|\n
\n";
$s_msg = mb_convert_encoding($s_msg,"JIS","SJIS");
mb_internal_encoding("SJIS");
mb_language("Japanese");
$from="${name}";
$from=mb_convert_encoding("${from}","JIS","SJIS");
$from = base64_encode($from);
$from = "=?ISO-2022-JP?B?" . $from . "?=";
$from = "From: \"".$from. "\"" . "<" . "$e_mail" . ">";
//表・予・申・能・十・ソなど特殊漢字の後につく\マークを削除
$s_msg = stripslashes($s_msg);
mb_Language('Japanese');
$sendto = "midori@mosk.co.jp";
mb_send_mail($sendto,"$subject","$s_msg","$from");
//-------------------------------------------------------------------------------------//
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
SJISからUTFに変換して...
-
SJIS→UTF-8変換後の文字化けに...
-
UTF8メールがLotus Notesで文字...
-
日本語混じりの文字列の語数制限
-
mb_eregについて
-
名前が日本語のファイルダウン...
-
SQL Serverで文字コードUTF-8
-
Warning: mb_strpos(): Unknown...
-
mb_send_mailの2重投稿を防止し...
-
記号全削除のクラスを作成したい
-
【PHP】日本語を実体参照符号化...
-
PHPでの文字列置換について
-
PostgreSQLからCSV形式でエクス...
-
mb_send_mailで、半角スペース...
-
phpMyAdmin内での文字化け
-
SJISで取得した半角カナをUTF-8...
-
mysql登録時の文字化け
-
文字化け変換方法
-
メール送信プログラムで特定文...
-
postの文字化け防止について
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
文字化け変換方法
-
PHPmailerでの添付ファイルの文...
-
PHP cURLでPOSTした値が文字化...
-
SQL Serverで文字コードUTF-8
-
日本語(マルチバイト)でのwor...
-
imodeメールのSubject部分の文...
-
「テキストテキスト」という文...
-
mb_eregについて
-
SJISからUTFに変換して...
-
SJISで取得した半角カナをUTF-8...
-
PostgreSQLからCSV形式でエクス...
-
PHPの文字化けについて教え...
-
PHPでのメール差出人名について
-
【PHP】日本語を実体参照符号化...
-
Shift-JISからUTF-8への変換が...
-
phpフォームで携帯へメール送信...
-
txtファイル作成の際に文字コー...
-
vodafoneが言う事ききません
-
文字コードを変換したURLを作成...
-
PHP + SQLite 文字化けについて
おすすめ情報