約1000文字のマークでメールに挿入される感嘆符


9

System.Net.Main名前空間を使用してSMTP経由で電子メールを送信する.NETプログラムを用意します。

顧客サイトにあるので、そこから(一連の?)SMTPリレーサーバーを経由して宛先に到達します。

現時点では、このSMTPリプレイ/電子メールインフラストラクチャに関する情報はありません(その情報を取得するのは難しいでしょう)。

行のどこかに、メールの長いURLに感嘆符が挿入されています。行の先頭から約100文字です。

編集-実際には約1000文字が見つかりました

これは、テストシステムや数百の他のサイトでは発生していません。

これは、長い行を分割するためのエスケープコードと関係があるに違いないと思います。

誰かアイデアはありますか?


リンクには100文字ではなく、メッセージには約1000文字が含まれていることがわかりました。これは、より多くの情報を提供しますが、なぜ1人の顧客からしか報告されないのか不思議です。たぶん、いくつかのSMTPサーバーは他のものより耐性がありますか?systemwebmail.com/faq/4.4.5.aspx
Ryan

回答:


11

これを自分で打った。

キャリッジリターンを含まないhtmlメッセージを作成している場合、1000文字のマーク付近のどこかでエラーが発生する可能性があります。

解決策は、いくつかの\ r \ n文字を追加して、各行が1000(または\ r \ n文字を数えない場合は988)未満になるようにすることです。

セクション2.1.1を参照してください。詳細については、RFC 2822の行の長さの制限:

2.1.1。行の長さの制限

この標準では、1行の文字数に2つの制限があります。文字の各行は998文字以下にする必要があり、CRLFを除いて78文字以下にする必要があります。


ありがとう-この投稿に関する議論もご覧ください-systemwebmail.com/faq/4.4.5.aspx
Ryan

RFC-2822-2.1.1は、強制されたルールではなく、より多くのガイダンスとアドバイスのようです。Outlookが影響を受けるようです。他の一部の電子メールクライアントは、この影響を受けません。
YoYo

@YoYo 文字の各行は998文字以下にする必要がありますが、78文字以下にする必要があります。ルールではなく、より多くのガイダンスとアドバイスになります。
sgmoore 2018年

うん、言い回しはその柔軟性を許さない。同意する必要があります。
-YoYo

0

特定の文字数での折り返しは、通常クライアントの問題です。他のサイトやテストマシンで表示されない場合は、そのコードはないと思います。メッセージの受信に使用されているクライアントを特定できないかどうかを確認します。これは、特定の文字数で自動折り返しを行う、古くて古いものである可能性があります。


0

同じコードが実行されている他の多くのサイトで問題が発生していない場合、.Netアプリが問題を引き起こしているようには聞こえません。問題のサイトは、SMTPストリームを監視している可能性のある、何らかのアプリケーションファイアウォールまたはスパム対策デバイスの背後にありますか?その場合、トリガーされている長いURLを切り捨てることに関するルールがあり、それによりメール内のURLが短縮されます。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.