• 締切済み

CGIメールフォームのメールが文字化けしてしまいます。

こんにちは。 CGIから自動返信されるメールが 人によって文字化けしてしまうそうです。 私の場合は、文字化けしないのですが・・・。 誰も文字化けしないような、自動返信メールを作りたいのですが、 CGIのどこをいじればよいかわかりません。 よかったら、教えてください。お願いします。

みんなの回答

回答No.4

まず、#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'); みたいな行は入っていますか?

yuki2005e
質問者

お礼

スクリプトに、 require 'jcode.pl'; は、存在しました。 原因は、charset="iso-2022-jp"だと思われます。 教えていただいたコーディングそのまま使わせていただきました。 とりあえず、これで対応したいと思います。 本当にありがとうございました。

yuki2005e
質問者

補足

ご回答ありがとうございました。 →print OUT "Content-Type: text/plain; charset=\"iso-2022-jp\"\n"; を入れてみたところ、CGIが正常に動きません。 どうしてでしょうか・・・ 下の場合はエラーにはなりません。 print OUT "Content-Type: text/plain\n"; すみませんが、よろしくお願いします。

回答No.3

理由として ○メッセージがJISに変換されていない ○メールヘッダに文字コード指定がない(#2さんの回答参照) ぐらいが考えられます。 「sendmail」と書かれている辺りのスクリプトを出してもらえますか? それと、スクリプト自身の文字コードは何で書かれていますか?

yuki2005e
質問者

補足

ありがとうございます。 最初にこのような感じで、 #!/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)
回答No.2

メールヘッダに文字コード指定と転送コード指定はありますか? Content-Type: text/plain; charset="iso-2022-jp" Content-Transfer-Encoding: 7bit こんなの。

yuki2005e
質問者

お礼

Content-Type: text/plain; charset="iso-2022-jp" が見当たらないので、原因はそれかもしれません。 ありがとうございます。

yuki2005e
質問者

補足

ありがとうございます。 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)
回答No.1

CGIが送信しているメールの文字コードの問題だと思われます。 最低限ヘッダー情報に文字コードを記述しましょう。 ただ、それだけだとメーラーによって化けてしまうものもあるようですので、 ヘッダー~本文まで文字コードは統一されている方がいいようです。 ※独学での判断結果なので、正式な規定等とずれている場合がありますので御了承ください。

yuki2005e
質問者

お礼

ありがとうございます。 ヘッダー情報に文字コードを追加してみます。

関連するQ&A

専門家に質問してみよう