過去のよく似た事象を検索しましたが解決しなかったので
質問します。よろしくお願いします。
携帯電話のメールアドレスに送信するWEBフォームをphpで
作成したいのですが、文字化けが直らずに困っています。
コードは次のような感じです。
PCへのメールは文字化けせず、DoCoMoへ送るとsubjectは正常で本文が化けます。
またauとvodafoneへ送るとすべて化けます。
$to = "$_REQUEST['$email']";
$from = "info@aaa.bbb";
$subject = "テスト送信";
$message = "テストメールです" .
$headers ='From: '. $from . "\r\n"
.'MIME-Version: 1.0' . "\r\n"
.'Content-Type: text/plain; charset=iso-2022-jp' . "\r\n"
.'Content-Transfer-Encoding:7bit' . "\r\n"
.'X-Mailer: PHP/' . phpversion();
if(mail($to, $subject, $message, $headers)==TRUE)
print("メールを送信しました");
else print("メール送信に失敗しました");
動作環境はSunOS5.7、Apache2.0、php5.0.3です。
コードはEUCで書いています。
No.3ベストアンサー
- 回答日時:
マイムは文字長制限もあるのでいかのように
処理するとよいでしょう。
function conv_auto_mime($str){
$pos = 0;
$str=mb_convert_encoding($str,"JIS","EUC-JP");
while ($pos < mb_strlen($str, "JIS")){
$output = mb_strimwidth($str,$pos,36,"","JIS");
$pos += mb_strlen($output, "JIS");
$TempStr .=(($TempStr)?" ":"")."=?ISO-2022-JP?B?".base64_encode($output)."?=";
}
return $TempStr;
}
$subject = "テスト送信";
$subject =conv_auto_mime($subject);
bodyはたんにコンバートすればよいでしょう
$message=mb_convert_encoding($message, 'JIS','EUC-JP');
コードまで書いて頂きありがとうございます。
試したところ、3キャリアにおいて題名・本文ともうまくいきました。
本文のところは
$message=mb_convert_encoding($message, 'JIS','auto');
としていたのでうまくいきませんでした。'auto'ではダメなんですね。
ともあれyambejpさんのコードで一発解決できました。
本当にありがとうございました。
No.2
- 回答日時:
mb_send_mail関数も試してみましたか?
mail関連は文字コード変換でつまづく事が多いですね。
添付ファイルがあったりすると特に。。。。
No.1
- 回答日時:
mailコマンドはマルチバイトをエンコードしてくれる
わけではありません。うけとった側が運良く
送り元の勝手に設定した文字エンコードを解釈
してくれれば、文字化けしないこともあるでしょうけど
基本的にはsubjectはマイムで、bodyは7bit jisで
エンコードしてやるのがルールです。
メールの基本をよく学習なさった上で運用なさることを
お勧めします。
この回答への補足
ありがとうございます。
$subject = mb_convert_encoding($subject, "JIS", "auto");
$subject = base64_encode($xSubject);
$subject = "=?iso-2022-jp?B?".$xSubject."?=";
こんな感じでしょうか?
結果は化け方が変わっただけで駄目でした。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・14歳の自分に衝撃の事実を告げてください
- ・架空の映画のネタバレレビュー
- ・「お昼の放送」の思い出
- ・昨日見た夢を教えて下さい
- ・ちょっと先の未来クイズ第4問
- ・【大喜利】【投稿~10/21(月)】買ったばかりの自転車を分解してひと言
- ・メモのコツを教えてください!
- ・CDの保有枚数を教えてください
- ・ホテルを選ぶとき、これだけは譲れない条件TOP3は?
- ・家・車以外で、人生で一番奮発した買い物
- ・人生最悪の忘れ物
- ・【コナン30周年】嘘でしょ!?と思った○○周年を教えて【ハルヒ20周年】
- ・ハマっている「お菓子」を教えて!
- ・最近、いつ泣きましたか?
- ・夏が終わったと感じる瞬間って、どんな時?
- ・10秒目をつむったら…
- ・人生のプチ美学を教えてください!!
- ・あなたの習慣について教えてください!!
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・都道府県穴埋めゲーム
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
mb_send_mailの2重投稿を防止し...
-
SJIS→UTF-8変換後の文字化けに...
-
マルチバイト文字列(PHP)
-
エスケープ文字の復帰(¥r)と...
-
VBAのコマンドボタンの文字列の...
-
改行を読み飛ばす
-
文章から指定した範囲の文字列...
-
LaTeX: captionの中で改行した...
-
ソースコードの1行が長いとき...
-
PHPで変数から1行目だけを取得...
-
改行が半角スペースに変わる
-
delphi でのコード上でTab を入...
-
VBAを使ってHTMLソースから特定...
-
16進数の文字列をアスキーコー...
-
コンボボックスの項目中に改行を
-
Ruby ファイルの読み込み
-
文字の入力で横バー上段、中断...
-
全角英数文字が嫌われる理由を...
-
保存方法
-
ファイル入出力について教えて...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
文字化け変換方法
-
UTF8メールがLotus Notesで文字...
-
PHP+Postgres 「髙」が文字化け
-
phpMyAdmin内での文字化け
-
SJISで取得した半角カナをUTF-8...
-
PHPmailerでの添付ファイルの文...
-
SJIS→UTF-8変換後の文字化けに...
-
SQL Serverで文字コードUTF-8
-
includeファイルの文字コードに...
-
PHPのsendmailでの文字化けにつ...
-
mb_strposについて予定外の結果...
-
「あ」→「82A0」のようにshift-...
-
mb_send_mailの2重投稿を防止し...
-
multipart/form-dataの文字化け
-
PHPスクリプトでエンコードエラー
-
IMAP関数で取得した文字列の、...
-
メールのCCに複数のアドレスを...
-
メール題名の文字化け
-
自動返信メールへの画像添付
-
mb_regex_encodingでエンコード...
おすすめ情報