• 締切済み

件名が文字化けしてしまう。PHPで送信フォームを作成しましたが件名が?

件名が文字化けしてしまう。PHPで送信フォームを作成しましたが件名が?????と 文字化けします。 <? require_once("./lib/form_check.lib"); $type = $_POST['type']; $company = $_POST['company']; $industry = $_POST['industry']; $post = $_POST['post']; $name = $_POST['name']; $address = $_POST['address']; $tel = $_POST['tel']; $mail = $_POST['mail']; $detail = $_POST['detail']; type_name($type); $to = "■■■@■■■■"; $subject = "お問い合わせ"; $header= "From:".$mail; $msg ="────────────────────────────────────────────\n"; $msg .="■お問い合わせ内容\n".$type_name."\n\n"; $msg .="■会社名\n".$company."\n\n"; $msg .="■業種\n".$industry."\n\n"; $msg .="■役職・部署名\n".$post."\n\n"; $msg .="■氏名\n".$name."\n\n"; $msg .="■住所\n".$address."\n\n"; $msg .="■電話番号\n".$tel."\n\n"; $msg .="■メールアドレス\n".$mail."\n\n"; $msg .="■お問い合わせ詳細\n".$detail."\n"; mail($to,$subject,$msg,$header); ?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" lang="ja" xml:lang="ja"> <head> <title>お問い合わせ</title> <meta http-equiv="cache-control" content="no-cache"> <meta http-equiv="Content-Type" content="text/html; charset=Shift_JIS"> これではダメなので mb_language("japanese"); mb_internal_encoding("EUC-JP"); mb_send_mail($to,$subject,$msg,$header); と付け足しました。 これで件名が????になるのはふせげたのですが今度は送信後のページ全体が 文字化けとなりお手上げ状態です。 どう組めばいいのでしょうか?

みんなの回答

  • yambejp
  • ベストアンサー率51% (3827/7415)
回答No.4

bodyやheaderもちゃんとやろうよ・・・ (もうすこし調べてから質問してほしいところ) $subject="お問い合わせ"; $subject=mb_convert_encoding($subject,"JIS","EUC-JP"); $subject=mb_encode_mimeheader($subject,"JIS"); $from ="おくるひと"; $from=mb_convert_encoding($from,"JIS","EUC-JP"); $from=mb_encode_mimeheader($from,"JIS"); $message="・・・・"; $message=mb_convert_encoding($message,"JIS","EUC-JP"); $version=phpversion(); $header=<<<eof From: {$from} <xxx@exsample.com> Return-Path: <xxx@exsample.com> MIME-Version: 1.0 Content-Type: text/plain; charset=iso-2022-jp Content-Transfer-Encoding: 7bit X-Mailer: PHP/{$version} eof; mail($to,$subject,$message,$header); とか・・・

  • localica
  • ベストアンサー率52% (202/385)
回答No.3

良くあるミスですけど、エンコーディングを変更した際にPHPファイルの文字コードセットも変更していますか? 或いは入力フォームが正しくエンコーディングされていますか?

  • yambejp
  • ベストアンサー率51% (3827/7415)
回答No.2

>その方法ですと件名が無記名になってしまうのです。 ならないでしょ・・・ <? $subject="お問い合わせ"; $subject=mb_convert_encoding($subject,"JIS","EUC-JP"); $subject=mb_encode_mimeheader($subject,"JIS"); print $subject; ?> もちろんこの場合はソースがEUCで書かれていなければいけませんが。

naiteisyou
質問者

お礼

度々ありがとうございます。 <? require_once("./lib/form_check.lib"); $type = $_POST['type']; $company = $_POST['company']; $industry = $_POST['industry']; $post = $_POST['post']; $name = $_POST['name']; $address = $_POST['address']; $tel = $_POST['tel']; $mail = $_POST['mail']; $detail = $_POST['detail']; type_name($type); $to = "■@■"; $subject="お問い合わせ"; $subject=mb_convert_encoding($subject,"JIS","EUC-JP"); $subject=mb_encode_mimeheader($subject,"JIS"); $header= "From:".$mail; $msg ="────────────────────────────────────────────\n"; $msg .="■お問い合わせ内容\n".$type_name."\n\n"; $msg .="■会社名\n".$company."\n\n"; $msg .="■業種\n".$industry."\n\n"; $msg .="■役職・部署名\n".$post."\n\n"; $msg .="■氏名\n".$name."\n\n"; $msg .="■住所\n".$address."\n\n"; $msg .="■電話番号\n".$tel."\n\n"; $msg .="■メールアドレス\n".$mail."\n\n"; $msg .="■お問い合わせ詳細\n".$detail."\n"; mail($to,$subject,$msg,$header); ?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" lang="ja" xml:lang="ja"> <head> <title>お問い合わせ</title> <meta http-equiv="cache-control" content="no-cache"> <meta http-equiv="Content-Type" content="text/html; charset=EUC-JP"> このようにしたのですが件名はちゃんとなったのですが本文などが 文字化けしてしまいました。 これにすると <meta http-equiv="Content-Type" content="text/html; charset=Shift_JIS"> 件名部分がなく本文が大丈夫の状態です。

  • yambejp
  • ベストアンサー率51% (3827/7415)
回答No.1

mb_send_mail()はなにかと問題がおおくてお薦めできません。 mail()を使うときに普通にエンコードしてやればよいのでは? $subject=mb_convert_encoding($subject,"JIS","EUC-JP"); $subject=mb_encode_mimeheader($subject,"JIS"); mail($to,$subject,$msg,$header);

naiteisyou
質問者

お礼

ありがとうございます。 その方法ですと件名が無記名になってしまうのです。 「お問い合わせ」という件名を付けたいのですが どのようにすればいいのでしょうか?

関連するQ&A