![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?e6f04cf)
過去のよく似た事象を検索しましたが解決しなかったので
質問します。よろしくお願いします。
携帯電話のメールアドレスに送信する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で質問しましょう!
似たような質問が見つかりました
- PHP Content-Typeが機能していない? 2 2022/07/17 11:10
- PHP PostgreSQLからCSV形式でエクスポートする際にカラム内の改行をとる方法 1 2023/02/22 10:05
- その他(プログラミング・Web制作) laravel 本番環境でメールが送れません。 1 2023/02/17 17:57
- JavaScript Javascriptが機能せず原因が分からないので教えて頂きたいです 3 2023/06/04 14:50
- PHP php 完了画面の送信メールのコードを書いているのですが・・・ 2 2023/06/02 12:01
- Visual Basic(VBA) 【追加】ファイルを閉じてダイアログで保存した時だけ処理の実行をする 3 2022/03/23 15:43
- PHP phpの imap_search で漢字コード 1 2022/09/06 17:32
- Excel(エクセル) PHPプログラムをエクセルに張り付けると検索ボックスがでてくる! 3 2022/05/08 07:10
- JavaScript ①入力フォーム→②確認表示画面→③送信完了画面のコードを書いているのです、 入力フォームから受け取っ 2 2022/05/10 16:45
- その他(メールソフト・メールサービス) outlookからの送信された件名が文字化けします 2 2023/04/18 14:29
関連するカテゴリからQ&Aを探す
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
文字化け変換方法
-
SelectedIndexChanged
-
mail()で送信したメールのタイ...
-
メールのCCに複数のアドレスを...
-
PHPでの文字列置換について
-
携帯で保存すると文字化け
-
SJIS→UTF-8変換後の文字化けに...
-
UTF8メールがLotus Notesで文字...
-
Warning: mb_strpos(): Unknown...
-
SQL Serverで文字コードUTF-8
-
COBOLの改行
-
VBAのコマンドボタンの文字列の...
-
ソースコードの1行が長いとき...
-
JavaDoc コメントの改行について
-
エスケープ文字の復帰(¥r)と...
-
C++で空Enterの入力を判...
-
最終行の改行について
-
文字の入力で横バー上段、中断...
-
コンボボックスの項目中に改行を
-
jsp 改行コードで改行させて表...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
文字化け変換方法
-
phpのメールフォームの完了画面...
-
SQL Serverで文字コードUTF-8
-
UTF8メールがLotus Notesで文字...
-
SJISで取得した半角カナをUTF-8...
-
mail()で送信したメールのタイ...
-
RSSを取得すると文字化けする。
-
includeファイルの文字コードに...
-
phpフォームで携帯へメール送信...
-
PHP+Postgres 「髙」が文字化け
-
廣のjis変換で文字化け
-
小さいひらがな(っ、ょ、ぃ、ゃ...
-
PostgreSQLからCSV形式でエクス...
-
メールのCCに複数のアドレスを...
-
PHPmailerでの添付ファイルの文...
-
ASCII文字列をEUCなどに変換し...
-
mb_convert_encoding で 一部の...
-
SJIS→UTF-8変換後の文字化けに...
-
CGIを作っています。渡されて来...
-
mb_ereg_replace での文字変換
おすすめ情報