- 締切済み
CGIメールフォームのメールが文字化けしてしまいます。
こんにちは。 CGIから自動返信されるメールが 人によって文字化けしてしまうそうです。 私の場合は、文字化けしないのですが・・・。 誰も文字化けしないような、自動返信メールを作りたいのですが、 CGIのどこをいじればよいかわかりません。 よかったら、教えてください。お願いします。
- みんなの回答 (4)
- 専門家の回答
みんなの回答
- toyota_sera_1990
- ベストアンサー率33% (64/191)
まず、#2さんのところに書いてあるようにContent-Type: text/plain;の後にcharset="iso-2022-jp"は入れたほうがいいでしょうね。 print OUT "Subject: $subject\n"; print OUT "Content-Type: text/plain; charset=\"iso-2022-jp\"\n"; print OUT "Content-Transfer-Encoding: 7bit\n"; みたいな感じで。 それと、出していただいたのはヘッダの部分で肝心な本文の部分が出てこないんですが、スクリプトのどこかに require 'jcode.pl'; とか &jcode::convert(*body, 'jis'); みたいな行は入っていますか?
- toyota_sera_1990
- ベストアンサー率33% (64/191)
理由として ○メッセージがJISに変換されていない ○メールヘッダに文字コード指定がない(#2さんの回答参照) ぐらいが考えられます。 「sendmail」と書かれている辺りのスクリプトを出してもらえますか? それと、スクリプト自身の文字コードは何で書かれていますか?
補足
ありがとうございます。 最初にこのような感じで、 #!/usr/local/bin/perl require 'jcode.pl'; $sendmail = '/usr/lib/sendmail'; メール送信は↓ #メールの送信 sub sendmail { if (!open(OUT,"| $sendmail $mailto")) { &send_error; } print OUT "mailForm: mailForm V1.0\n"; print OUT "To: $mailto\n"; print OUT "From: $email\n"; print OUT "Subject: $subject\n"; print OUT "Content-Transfer-Encoding: 7bit\n"; print OUT "Content-Type: text/plain\n"; このような感じになっています。 修正は秀丸で行っています。 よろしくお願いします。
- PrintScree
- ベストアンサー率25% (538/2091)
メールヘッダに文字コード指定と転送コード指定はありますか? Content-Type: text/plain; charset="iso-2022-jp" Content-Transfer-Encoding: 7bit こんなの。
お礼
Content-Type: text/plain; charset="iso-2022-jp" が見当たらないので、原因はそれかもしれません。 ありがとうございます。
補足
ありがとうございます。 print OUT "Content-Transfer-Encoding: 7bit\n"; print OUT "Content-Type: text/plain\n"; このような感じのところでしょうか? Content-Type: text/plain; charset="iso-2022-jp" っていうのは見つかりません。 加えた方がよいのでしょうか。
- asahina02
- ベストアンサー率47% (95/202)
CGIが送信しているメールの文字コードの問題だと思われます。 最低限ヘッダー情報に文字コードを記述しましょう。 ただ、それだけだとメーラーによって化けてしまうものもあるようですので、 ヘッダー~本文まで文字コードは統一されている方がいいようです。 ※独学での判断結果なので、正式な規定等とずれている場合がありますので御了承ください。
お礼
ありがとうございます。 ヘッダー情報に文字コードを追加してみます。
お礼
スクリプトに、 require 'jcode.pl'; は、存在しました。 原因は、charset="iso-2022-jp"だと思われます。 教えていただいたコーディングそのまま使わせていただきました。 とりあえず、これで対応したいと思います。 本当にありがとうございました。
補足
ご回答ありがとうございました。 →print OUT "Content-Type: text/plain; charset=\"iso-2022-jp\"\n"; を入れてみたところ、CGIが正常に動きません。 どうしてでしょうか・・・ 下の場合はエラーにはなりません。 print OUT "Content-Type: text/plain\n"; すみませんが、よろしくお願いします。