2009-05-28 18 views
0

私はきれいにフォーマットされた処理ログをユーザーに送信するアプリケーションを持っています。.NET電子メールの内容 - 改行

アプリケーションをローカル(デバッグモード)で実行すると、[SMTPServer]を使用して送信すると、ログがきれいにフォーマットされ、期待どおりに表示されます。

テストサーバーにアプリケーションをインストールし、同じ[SMTPServer]を使用して送信するように構成すると、ログは受信トレイに届き、改行は削除されます。

HTML形式に変換することは実際には今選択肢ではありません。

私はOutlookがそれらを取り除いていることを認識していますが、なぜサーバーから来たときにのみOutlookがそれを行うのか混乱しています。

思考?

+0

あなたは、IIS上の別のバージョンを実行していますあなたのテストサーバー? –

+0

IISなし... Windowsサービスです。 –

答えて

1

改行を導入するのはどのようなコードですか?メールを送信するためのコードが同一で、同じサーバーを経由して送信され、同じクライアントによって消費された場合は、ソースを調査します。ログそのもの。システムをローカルで実行したときにどのように出力されるのかとは異なり、サーバー上で生成されたときに見た目が異なって見えますか?

+0

私はAppendFormat()の呼び出しに続いてAppendLine()を呼び出すStringBuilderを使用しています。 私の開発マシン(Vista)よりも、デフォルトのラインターミネータがサーバ(W2K3)上で異なるかどうかは疑問です。 何かを見て...ありがとう。 –

1

ログ情報を両方のボックスのファイルに書き出し、出力に違いがあるかどうかを確認してください。それらが同じであれば、おそらくデフォルトの電子メールのエンコーディングなどでメールサーバーの設定に問題がある可能性があります。それらが異なる場合は、サーバーにリモートデバッグをセットアップして、文字列/電子メールを調べて、そのバリアントを見つけることができるかどうかを調べることができます。

私は(デフォルトの設定で)Vistaと2003年の間に異なる行終端を見たことがありませんが、私はそれを見て何かであることに同意...

2

を、私は、これはそれを修正するだろうわからないんだけど、してみてください

System.Environment.NewLine 

または単に「\ n」を使用して改行を追加します。しかし、前者はより良い習慣です。

+0

+1。詳細はこちらhttp://ablog.apress.com/?p=967 – Dhaust

+1

StringBuilderのAppendLine()メソッドでそれを処理してはいけませんか?私はそれを行ってあげるよ。 –

0

メールの世界では、行は「\ r \ n」(vbCrLf)で終了することができます。 Environment.NewLineまたは "\ n"または "\ r"を使用すると、問題が発生する可能性があります。

改行は、 "\ r \ n"(引用符なし)の組み合わせで終了する必要があります。それがここでの問題であれば、私は知らない

あなたはStringBuilderのを使用して電子メールを構築している場合は、しかし、これを行うための正しい方法は次のとおりです。

sb.Append(singleLineContent); 
sb.Append("\r\n"); 
+0

http://msdn.microsoft.com/en-us/library/system.environment.newline.aspx私はEnvironment.NewLineに関してお読みください: Unix以外のプラットフォームでは「\ r \ n」を含む文字列、またはUnixプラットフォームでは "\ n"を含む文字列。 – Oosterman

関連する問題