当前位置:  开发笔记 > 前端 > 正文

Outlook自动清理我的换行符并搞砸了我的电子邮件格式

如何解决《Outlook自动清理我的换行符并搞砸了我的电子邮件格式》经验,为你挑选了3个好方法。

我正在使用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.我也不能假设他们知道足以关闭autoclean功能以使消息正确格式化.

我在其他邮件客户端中查看了这些邮件并正确显示

更多信息:

我使用的是UTF-8 BodyEncoding(msg.BodyEncoding = System.Text.Encoding.UTF8)

正在从UTF-8编码的文本文件中读取msg.Body,并且每行都以crlf终止.

问题:如何更改邮件格式以避免此问题?



1> Jim Davis..:

您还可以在行的末尾插入制表符(就在CR LF之前).这个额外的空白区域将位于该行的末尾,因此对用户不可见.您可能更喜欢这个必须在左侧插入空格.请注意,单个空间是不够的(虽然可能有多个空格会有所帮助,但我不知道.)


`Regex.Replace(messageBody,@"(?
2> Alex B..:

以2个空格开始每一行,Outlook将被"欺骗"以保持格式.

所以改变

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

以下是我在研究这个问题时发现的文章,这个文章比我的答案更深入.


这是一个方便的正则表达式来解决这个问题:`Regex.Replace(messageBody,@"^(?!\ s\s)","",RegexOptions.Multiline);`
好吧,在那个正则表达式中有两个空格,但这是html它只显示一个!

3> DHornpout..:

这个答案是关于如何从Outlook客户端"禁用"该功能.

转到工具 - >"选项..."

在"首选项"选项卡中,单击"电子邮件选项..."

取消选中"删除纯文本邮件中的额外换行符"框.

点击OK

仅供参考:我使用的是Outlook 2007


在Outlook 2010中,它是:文件>选项>邮件>向下滚动到"邮件格式"部分>取消"删除纯文本邮件中的额外换行符"框.
谢谢 - 现在请指导我们的100.000+通讯接收器执行此操作
我也不喜欢这个功能.除此之外,它会导致电子邮件中的代码被破坏,PGP签名检查失败.
这是一个客户端解决方案.更好的是防止Outlook在服务器端执行此操作的可靠方法,即通过不干扰其他客户端的方式格式化邮件(因为您不知道接收方将使用哪个邮件客户端).
推荐阅读
放ch养奶牛
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有