• 締切済み

phpのフォームで携帯に送ると文字化け

お世話になります。 PCサイトのフォームから情報を入れて携帯にメールを飛ばすphpを作成しています。 フォームからPCやスマホにメールを飛ばすときは問題なく表示されるのですが、 フォームから携帯(ガラゲー)に飛ばすと文字化けします。 それも件名だけです。 どうすれば文字化けなく表示させることができるでしょうか? 教えてください。 <?php mb_language('ja'); mb_internal_encoding('SJIS'); session_start(); $name=$_SESSION["name"]; $furi=$_SESSION["furi"]; $tel=$_SESSION["tel"]; $email=$_SESSION["email"]; $ren=$_SESSION["ren"]; $ktel=$_SESSION["ktel"]; $fax=$_SESSION["fax"]; $iken=$_SESSION["iken"]; $to=$email; $subject="こんにちは"; $from= "From: "AAAAAA"; $message=<<<MESSAGE Eメールアドレス:{$email} お名前:{$name} 様 フリガナ:{$furi}様 電話番号:{$tel} 携帯電話番号:{$ktel} FAX番号:{$fax} 連絡方法:{$ren} <ご意見、ご要望> {$iken} MESSAGE; $message.=<<<MESSAGE MESSAGE; mail($to , $subject , $message,$from); session_unset(); ?>

みんなの回答

  • luka3
  • ベストアンサー率72% (424/583)
回答No.2

自分が実際に使っているものです。 mb_language("Japanese"); mb_internal_encoding("UTF-8"); mb_detect_order("ASCII, JIS, UTF-8, EUC-JP, SJIS"); // Fromの名前をMIMEに変換 $fromName = mb_encode_mimeheader(mb_convert_encoding($name,'JIS','auto')); $header = 'From: '.$fromName.' <'.$email.'>'."\n"; // メール送信 mb_send_mail($to_adr, $subject, $body, $header, "-f ".$email); $subjectのMIME変換はしていませんが、文字化けしているという報告は受けていません。 毎回違う内容で普通に漢字も使っています。 フォームおよびphpは共にUTF-8で書かれています。

  • shimix
  • ベストアンサー率54% (865/1590)
回答No.1

>mail($to , $subject , $message,$from); mailがmb_send_mailのAliasになっているサーバでしょうか?少なくともsubjectは(化けるとのことなので)mb_encode_mimeheaderされていないようですから、Aliasになっていない(mb_send_mailではなく、書いたままのmailが使われている)と思われます。もしそうであれば渡したままの内容がメールとして送られますので、mb_language('ja')を書く意味はないです。 PCのメーラで受信したメールのメールヘッダ(Content-type)がどうなっているかを確認してください(出来れば生のメールデータを落としてエディタで確認すべきです)。 #まぁとりあえずはmb_send_mailにしてみるべきです。