换行电子邮件中的双小数点

本文关键字:小数点 电子邮件 换行 | 更新日期: 2023-09-27 17:57:29

当我使用.NET System.Net.Mail.MailMessage类发送HTML电子邮件(实际上只是生成.eml文件,而不是现在发送)时,它似乎在给我的一些数字添加小数点。

只有当数字被拆分到新行上,并且新行上的第一个字符是一个点时,它才会添加额外的小数点。

输入:

[snip]27.50[snip]137.50[snip]

输出:

[snip]27.=
50[snip]=
[snip]137=
..50[snip]

在Outlook中打开时,第一个数字输出为27.00,但第二个(可以理解)输出137..50(小数点太多!)

我知道平等是一种"软线突破"。额外的.有语法吗?

为什么输出2个点?我能阻止它这样做吗?

非剪切输出:

<tr>=0D=0A          <td>=
Units</td><td>Standard Rate</td><td></td><td>25.00</td><td>27.=
50</td><td>25.00</td><td>625.00</td><td>687.50</td>=0D=0A       </tr><=
tr>=0D=0A           <td>Timesheet Units</td><td>Standard Rate</td><td></t=
d><td>25.00</td><td>27.50</td><td>5.00</td><td>125.00</td><td>137=
..50</td>=0D=0A     </tr>

换行电子邮件中的双小数点

我怀疑您只是遇到了这样一个事实:行开头的句点用于终止邮件。

来自RFC 2821第4.5.2节:

4.5.2透明度

在没有数据透明度的情况下,字符序列"."结束邮件文本,用户无法发送。一般来说,用户不知道这种"被禁止"的序列。到允许透明地传输所有用户编写的文本使用以下程序:

  • 在发送一行邮件文本之前,SMTP客户端会检查行的第一个字符。如果是一个周期,则增加一个句点插入行的开头
  • 当SMTP服务器接收到一行邮件文本时,它会进行检查线路。如果该行由单个周期组成,则为被视为邮件结束指示符。如果第一个字符是句点,行上还有其他字符,第一个字符被删除

换句话说,我怀疑当邮件真的发送时,接收者只会看到一个点。目前还不清楚为什么Outlook会在这里做错事。。。