1. ホーム
  2. .net

[解決済み] Outlookが改行を自動削除し、メールフォーマットを台無しにする

2022-08-05 12:22:32

質問

dotnetフレームワークを使用して電子メールを送信しています。以下は、メッセージを作成するために使用しているテンプレートです。

Date of Hire: %HireDate%
Annual Salary: %AnnualIncome%
Reason for Request: %ReasonForRequest%

Name of Voluntary Employee: %FirstName% %LastName%
Total Coverage Applied For:  %EECoverageAmount%
Guaranteed Coverage Portion: %GICoveragePortion%
Amount Subject to Medical Evident: %GIOverage%

outlook でメッセージを受信すると、outlook が "このメッセージの余分な改行は削除されました" と表示します。そして、メッセージはこのように表示されます。

Date of Hire: 9/28/2001
Annual Salary: $100,000
Reason for Request: New Hire

Name of Voluntary Employee: Ronald Weasley Total Coverage Applied For:  $500,000 Guaranteed Coverage Portion: $300,000.00 Amount Subject to Medical Evident: $200,000

Outlook が名前、EECoverageAmount などの後にある必要な改行を誤って削除していることに注意してください...

電子メールの受信者にとって、正しくフォーマットされた電子メールを受け取ることは重要であり、受信者の何人かは outlook 2003 を使用していると想定しなければなりません。また、メッセージを適切にフォーマットするために自動クリーニング機能を停止するほどの知識があるとは思えません。

これらのメッセージを他のメール クライアントで表示したところ、正しく表示されました。

より多くの情報を得ることができます。

  • UTF-8 BodyEncodingを使用しています(msg.BodyEncoding = System.Text.Encoding.UTF8)
  • msg.Body は UTF-8 でエンコードされたテキストファイルから読み込まれ、各行の終端は crlf で終了します。

質問です。 この問題を回避するために、メッセージのフォーマットを変更するにはどうしたらよいでしょうか。

どのように解決するのですか?

すべての行を2つのスペースで始めると、outlookはあなたの書式を維持するように"tricked"されます。

そこで、次のように変更します。

Date of Hire: %HireDate%
Annual Salary: %AnnualIncome%
Reason for Request: %ReasonForRequest%

Name of Voluntary Employee: %FirstName% %LastName%
Total Coverage Applied For:  %EECoverageAmount%
Guaranteed Coverage Portion: %GICoveragePortion%
Amount Subject to Medical Evident: %GIOverage%

から

  Date of Hire: %HireDate%
  Annual Salary: %AnnualIncome%
  Reason for Request: %ReasonForRequest%

  Name of Voluntary Employee: %FirstName% %LastName%
  Total Coverage Applied For:  %EECoverageAmount%
  Guaranteed Coverage Portion: %GICoveragePortion%
  Amount Subject to Medical Evident: %GIOverage%
^^ <--- Two extra spaces at the start of every line

ここでは 記事 この問題を調査しているときに見つけたもので、私の答えよりももう少し深く掘り下げています。