同じメールをOutlook Express で受信すると文字化けしません。
http://www.hobo-ya.com/kohtao/planetinfo/ask/fandive_book.php
上記フォームは、各項目が、それぞれ別のphpファイルになっています。
上記フォームのソースは、以下に貼りつけました。
http://planetscuba.blog5.fc2.com/blog-entry-1999.html
フォームの文字コードを変更したり、
項目別のphpファイルの文字コードを変更したのですが、
文字化けがなおりません。
(受信したメールだけでなく、ブラウザで表示した時にフォーム自体が文字化けしてしまったりもしました。)
●フォーム本体とソース内にあるphpファイルに関する文字エンコード
●フォーム本体で読み込まれるphpファイルの文字エンコード
これらの組み合わせだと思うのですが、
問題を解決できません。
どのように修正すれば、文字化けせずに表示されるようになりますでしょうか?
教えていただけると助かります。
「# メールボディを作成する」の処理内(※295行目の「$mailbody .= "$naiyo_o\n\n";」から318行目のforループの処理終了「}」までの変更になります。)
# $mailbody .= "$naiyo_o\n\n"; # この行の前に次の処理を追加して、$mailbodyには変数で代入します。 $naiyo_o = "$naiyo_o\n\n"; $naiyo_o =~ tr/+/ /; $naiyo_o =~ s/%([0-9a-fA-F][0-9a-fA-F])/pack("C", hex($1))/eg; $naiyo_o =~ s/[\r\n]+/\n/g; &jcode'convert(*naiyo_o, "jis"); $mailbody .= $naiyo_o; for ($i = 1; $i < $cnt-3; $i++) { if($FORM{$FORM[$i]} ne ""){ if($FORM[$i] eq $onamae){ $first = "\n代表\の方の情報----------------------------------------------\n"; $first =~ s/%([0-9a-fA-F][0-9a-fA-F])/pack("C", hex($1))/eg; &jcode'convert(*first, "jis"); $mailbody .= $first; } if($FORM[$i] eq $onamae2){ $second = "\n2人目の方の情報----------------------------------------------\n"; $second =~ s/%([0-9a-fA-F][0-9a-fA-F])/pack("C", hex($1))/eg; &jcode'convert(*second, "jis"); $mailbody .= $second; } if($FORM[$i] eq $onamae3){ $third = "\n3人目の方の情報----------------------------------------------\n"; $third =~ s/%([0-9a-fA-F][0-9a-fA-F])/pack("C", hex($1))/eg; &jcode'convert(*third, "jis"); $mailbody .= $third; } if($FORM[$i] eq $onamae4){ $fourth = "\n4人目の方の情報----------------------------------------------\n"; $fourth =~ s/%([0-9a-fA-F][0-9a-fA-F])/pack("C", hex($1))/eg; &jcode'convert(*fourth, "jis"); $mailbody .= $fourth; } $mailbody .= "$FORM[$i] = $FORM{$FORM[$i]}\n"; } }
※エンコードされていない箇所とエンコードされている箇所が混在していた為、文字化けしていたようですので、すべてエンコードされるように変更しました。
※今まで受信したメールには、フォームで入力した人数分の情報とコメントが記載されていたでしょうか?
上記のコードでは届いていなかった可能性があります。
入力されたすべての情報を受信したい場合は、次の記述を使ってください。(※全員の情報送信済みだったり、コメントに質問などが書かれていた場合、話がかみ合わなかったのではないかと思うのですが・・・)
# $mailbody .= "$naiyo_o\n\n"; # この行の前に次の処理を追加して、$mailbodyには変数で代入します。 $naiyo_o = "$naiyo_o\n\n"; $naiyo_o =~ tr/+/ /; $naiyo_o =~ s/%([0-9a-fA-F][0-9a-fA-F])/pack("C", hex($1))/eg; $naiyo_o =~ s/[\r\n]+/\n/g; &jcode'convert(*naiyo_o, "jis"); $mailbody .= $naiyo_o; for ($i = 1; $i < $cnt; $i++) { if($FORM{$FORM[$i]} ne ""){ if($FORM[$i] eq $onamae){ $first = "\n代表\の方の情報----------------------------------------------\n"; $first =~ s/%([0-9a-fA-F][0-9a-fA-F])/pack("C", hex($1))/eg; &jcode'convert(*first, "jis"); $mailbody .= $first; } if($FORM[$i] eq $onamae2){ $second = "\n2人目の方の情報----------------------------------------------\n"; $second =~ s/%([0-9a-fA-F][0-9a-fA-F])/pack("C", hex($1))/eg; &jcode'convert(*second, "jis"); $mailbody .= $second; } if($FORM[$i] eq $onamae3){ $third = "\n3人目の方の情報----------------------------------------------\n"; $third =~ s/%([0-9a-fA-F][0-9a-fA-F])/pack("C", hex($1))/eg; &jcode'convert(*third, "jis"); $mailbody .= $third; } if($FORM[$i] eq $onamae4){ $fourth = "\n4人目の方の情報----------------------------------------------\n"; $fourth =~ s/%([0-9a-fA-F][0-9a-fA-F])/pack("C", hex($1))/eg; &jcode'convert(*fourth, "jis"); $mailbody .= $fourth; } # 項目名の比較の為にエンコードします。※お名前~お名前4についても、項目名が固定で変更予定がないのでしたら、+記号の変換と改行コードの変換の行は削除するかコメントアウトしても大丈夫です。 $comment = 'コメント'; $comment =~ s/%([0-9a-fA-F][0-9a-fA-F])/pack("C", hex($1))/eg; &jcode'convert(*comment, "jis"); if($FORM[$i] eq $comment){ $comment = "\nコメント(ご質問・ご連絡など)-------------------------------\n"; $comment =~ s/%([0-9a-fA-F][0-9a-fA-F])/pack("C", hex($1))/eg; &jcode'convert(*comment, "jis"); $mailbody .= $comment; } $mailbody .= "$FORM[$i] = $FORM{$FORM[$i]}\n"; } }
※コメントでの質問ですが、カスタマイズしている箇所がバージョンアップの変更点に影響している場合、コピー&ペーストしただけでは動かない可能性もあります。
http://q.hatena.ne.jp/1242125094
※ソースファイルの文字コードを変更しただけでは、送信されるメールの文字コードは適切に処理されませんので元に戻してください。(送信フォームの各ファイル、「formmail.cgi」ともにShift_JISで正しく動作する仕様になっています。)
※カスタマイズしていない「WwwMail」の最新バージョンは現在3.28ですが、こちらで確認した所文字化けは確認されませんでした。
GmailにWEBアクセスして表示した時に文字化けしているのですか?
ありがとうございます。
formmail.cgiは何も変更していません。
メールはGmailに転送しているのですが、WebアクセスしてGmailで見ると文字化けしてしまいます。
最新バージョンに必要な箇所だけコピペして、現状のformmail.cgiを上書きしたら、フォームはそのまま使えるものでしょうか?