dポイントプレゼントキャンペーン実施中!

過去のよく似た事象を検索しましたが解決しなかったので
質問します。よろしくお願いします。

携帯電話のメールアドレスに送信する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で書いています。

A 回答 (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');
    • good
    • 0
この回答へのお礼

コードまで書いて頂きありがとうございます。

試したところ、3キャリアにおいて題名・本文ともうまくいきました。
本文のところは
$message=mb_convert_encoding($message, 'JIS','auto');
としていたのでうまくいきませんでした。'auto'ではダメなんですね。

ともあれyambejpさんのコードで一発解決できました。
本当にありがとうございました。

お礼日時:2006/06/09 20:25

mb_send_mail関数も試してみましたか?



mail関連は文字コード変換でつまづく事が多いですね。
添付ファイルがあったりすると特に。。。。

この回答への補足

試してみましたが、mb_send_mailを使うとPCでも駄目になってしまいます。
サーバー側の設定でしょうか。

補足日時:2006/06/08 16:00
    • good
    • 0

mailコマンドはマルチバイトをエンコードしてくれる


わけではありません。うけとった側が運良く
送り元の勝手に設定した文字エンコードを解釈
してくれれば、文字化けしないこともあるでしょうけど
基本的にはsubjectはマイムで、bodyは7bit jisで
エンコードしてやるのがルールです。

メールの基本をよく学習なさった上で運用なさることを
お勧めします。

この回答への補足

ありがとうございます。
$subject = mb_convert_encoding($subject, "JIS", "auto");
$subject = base64_encode($xSubject);
$subject = "=?iso-2022-jp?B?".$xSubject."?=";

こんな感じでしょうか?
結果は化け方が変わっただけで駄目でした。

補足日時:2006/06/08 15:58
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!