- ベストアンサー
CGIプログラムを使った申し込みフォームをHTML形式のメールで送りました。ソースを開くと文字化けしてしまいます。
CGIプログラムを使うことにより、WEB上から申し込みフォームを使って入力事項をHTML形式によりメールしました。しかし、ソースを開いてみると文字化けしています。 CGIプログラムは、Shift JIS で保存したものを送信しているのですが。。 どうすれば、文字化けしない、きれいなソースが見れるようにできるでしょうか?
- みんなの回答 (7)
- 専門家の回答
質問者が選んだベストアンサー
こちらでも失礼します :-) インターネットのメールで日本語表記を利用する場合はそもそもJIS(ISO-2022-JP)の7Bitで送信するのが暗黙のルールとなっています。 つまり、Shift JISのまま送り出すのではなく、JISに文字コードをコンバートしてから送り出せば良い訳です。 簡単に実現するには nkf という外部コマンドを1PASSさせるか、jcode.plというperlモジュールを用います。 ただし単純に全ての文書をnkfやperlを通すとメールヘッダ内のSubject:等もJISコードに変換されてしまいます。 メールヘッダに関してはmime変換を行う様にと rfcで取り決められています。 (現実にはこのmime実装にも色々とトラヴルが発生しますが) 尚、メールヘッダ及びメール本文に相当するHTMLの Content-type;指定も ISO-2022-JP (←JISの事) に統一しないと、受信したメーラで正しく認識できなくなりますので注意してください。 出口は近いです。ガンバってくださいネ :-D
その他の回答 (6)
- so_blue
- ベストアンサー率48% (50/104)
1) メールヘッダ/MIME/本文 のコードが合っていない メールヘッダ:Content-Type: text/html;charset=iso-2022-jp MIME:<meta HTTP-EQUIV="content-type" CONTENT="text/html; charset=Shift_JIS"> になっているとか、送信前の本文が実はjisに変換されていないとか。 2) OLEの初期設定が、Shift_JIS等ちがうものになっている のあたりはどうでしょうか?
お礼
メールヘッダは、:Content-Type: text/html;charset=iso-2022-jpにしていて、 Shift_JISではありません。。 結局、できなかたのですが、そもそも質問の仕方からあまりよくなかったようです。でも、勉強になりました。 ありがとうございました。
- yomo3
- ベストアンサー率32% (88/269)
ようやく意図が掴めました。 しかしながら、そういった経験がないのではっきりとは申せませんが、メールのソースを見る必要はない気がいたします。 メールのHTML形式というのは、フル実装のHTML(送信ボタンを表示させるためにはこちらでないとできない)と、簡易HTML(メーラーで普通に送れる書式メール)があるので、その辺りのコーディングの仕方の違いを研究なさりたいということだと思います。 メール本体の記述の仕方というように質問を変更なさることをお薦めいたします。
- so_blue
- ベストアンサー率48% (50/104)
> どうすれば、文字化けしない、きれいなソースが見れるようにできるでしょうか? #3 のご助言でゴールにたどり着けない場合は、 さしあたり ・動作させている環境(サーバ・OS・プログラム言語の種類やバージョン) ・確認している環境(OS・メーラー) ・CGIのメール送信部分(必要なところを抜粋) あたりを提示されれば、具体的な答えが得られるかもしれません。
補足
サーバーはLINUX、プログラム言語はPerl、確認しているOSはWindows98SE、メーラーはOutlookExpressです。 CGIのメール送信部分は7bitと、JISを指定しているだけです。
- yomo3
- ベストアンサー率32% (88/269)
ほらほら、話が難しくなったでしょ。 カンタンに言えば、メールのソースを正しく見るためのツールがメーラーなのであって、ソースを見る必要があるのは、ヘッダーが正しく送られているかなどの確認のためです。 で、#3の方がおっしゃるように、どうしてもソースで正しく見たいと言うことであれば、メールの本文をJISコードに変換して送信すればいいのですが、世の中にはいろんなメーラーを使っている方がいるので、それらに全て対応させるコードを完璧に書くのはとっても大変です。まぁ、あまり現実的ではありません。 がんばってくださいね。
- yomo3
- ベストアンサー率32% (88/269)
>CGIプログラムを使うことにより、WEB上から申し込みフォームを使って入力事項をHTML形式によりメールしました。 ここが全般的によくわからないのです。何をどのようにメールしたんですか? >しかし、ソースを開いてみると文字化けしています。 メールは7ビットで送信されるので、ソースは、通常「文字化け」しているものです。ソース表示で日本語がきちんと見られると言うことは基本的にないのですが……。 というわけで、再度補足要求です。
補足
>CGIプログラムを使うことにより、WEB上から申し込みフォームを使って入力事項をHTML形式によりメールしました。 メールにもテキスト形式で見る場合と、HTML形式で見る場合があるかと思うのですが、それをHTML形式で見れるように送ったということです。 メールは7ビットで送信されるので、ソースは、通常「文字化け」しているものです。ソース表示で日本語がきちんと見られると言うことは基本的にないのですが……。 そうなんですか。。それを文字化けしないようにするにはどうしたらいいかをお聞きしたかったのですが。。
- yomo3
- ベストアンサー率32% (88/269)
あのお、ご質問の意味がよくわかりません。 CGIプログラムは、申し込みフォーム表示とフォームをSubmitでメール送信という内容ですか? 「HTML形式によりメール」は具体的にどのように実現していますか? CGIで処理していますか? なぜHTML形式で送るのですか? 開いたソースというのは、送られたメールのソースですか? ということは、CGIのテストをしたらということですか? CGIはPerlですか? で、回答を求められているのは、メールのソースを文字化けさせないようにするには、ということでしょうか? わからないことだらけで、回答がピントはずれになりそうです。
補足
ソースは、送られてきたメールを転送にすれば、その時にソースが見れると思うのですが。。 >回答を求められているのは、メールのソースを文字化けさせないようにするには、ということでしょうか? そうです。よろしくお願いします。
お礼
結局、できなかたのですが、そもそも質問の仕方からあまりよくなかったようです。でも、勉強になりました。 ありがとうございました。
補足
メール文書を生成するための指定として、 ISO-2022-JPと7Bitは表記してあります。 Shift JISと言ったのは、CGIプログラムを作成した時に保存した形式のことでした。すみません。 メールヘッダ内のSubject:が文字化けするのは、別にいいんです。実は、何をしようとしていたかといいますと、送られてきたHTMLメールにSubmitボタンをつけて、更に送信しようとしたのです。。そのためには、きれいなソースで表示されていることが必要かなと思いまして。。ちょっと無謀すぎでしょうか。。