• ベストアンサー

メール送信時文字化けする

ASP.NETでWebアプリケーションを開発しています。 Web上のフォームから入力された内容を、メール送信させたいのですが、メール送信自体はうまくいくのですが、受信した内容を見てみると、入力内容が全角450文字くらいを超えた時、なぜかそれ以降の入力内容が文字化けしていました。入力内容が約450文字未満の時は問題ありませんでした。 ちなみに、入力内容は、メール送信と同時にDBにも書き込んでいるのですが、DB上のデータは文字化けしていませんでした。よって、メール送信時に文字化けしているか、あるいは、受信するメーラーの設定の問題なのか、その他に原因があるのか、うまく切り分けができずに困っています。 メールの送信には、SmtpMailクラスのSend()メソッドを使っています。メーラーはBecky!を使用しています。フォームからの入力文字は1000文字程度を予定しています。 文字化けを回避する方法について、どなたかアドバイスいただけないでしょうか? なお、開発環境は以下のとおりです。  OS:Windows 2003 Server  IIS:ver6.0  Microsoft .NET Framework SDK v1.1 よろしくお願いいたします。

質問者が選んだベストアンサー

  • ベストアンサー
  • Bonjin
  • ベストアンサー率43% (418/971)
回答No.2

まずは違うメーラーを使ってメールを受信してみましょう。(できれば何種類か違うものを使って) それでも文字化けするようならば、それ以前の問題と考えることが出来ます。 メーラーで差が出ないようならば、パケットキャプチャを使ってメールサーバからメールを受信する時とWebサーバからメールサーバにメールが送信される時のパケットを調べてみましょう。 送信時のパケット内容と受信時のパケット内容に差異があるようならば(メール本文を比較してみてください)メールサーバを変えて試してみてください。 パケット内容が送信時にすでにおかしければSmtpMailクラスのバグかプログラムに何か問題があると考えられますので見直してみてはいかがでしょうか?

nihonkai2002
質問者

お礼

ご回答、どうもありがとうございます。 また、お礼が大変遅くなり、誠に申し訳ございません。 ご指摘いただいた手順で調べてみようと思います。 問題の切分け方の参考になりました。 どうもありがとうございました。

その他の回答 (1)

  • Te-Sho
  • ベストアンサー率52% (247/472)
回答No.1

DBにうまく書き込めていると言うことはhttp通信でクライアントからサーバにデータが送られてくるときには問題がないと言うことになります。 (入力データが1000文字を超えると言うことはmethod=postでサーバに送っているかと思いますのでBase64エンコードは関係ないかと思います。) 気になるのは改行コードがどのように入っているかです。 一行で998文字を超えてはならないことや改行がCRLFでなくてはいけないことがRFCで規定されています。 以下のURLに説明とサンプルがありますのでご参照ください。 また、メール送信に関する規定のRFC文書の日本語訳もいろいろなサイトに掲載されていますので一度検索することをお勧めします。

参考URL:
http://www.atmarkit.co.jp/fdotnet/dotnettips/017sendmail/sendmail.html
nihonkai2002
質問者

お礼

ご回答、どうもありがとうございます。 また、お礼が大変遅くなり、申し訳ございません。 >一行で998文字を超えてはならないことや改行がCRLFでなくてはいけ >ないことがRFCで規定されています。 メール送信に関する規定について、勉強してみます。 どうもありがとうございました。