4

我正在使用TIdMessage和发送纯文本电子邮件TIdSMTP

对于Body我使用一个简单的连接字符串,如

Body := SomeText + #13#10 +
          SomeOtherText + #13#10 +
          SomeMoreText + #13#10 +
          FinalText;

无论如何,在生成的电子邮件中,一些“ #13#10”不会被忽略。我记录了Body变量,我可以看到文本进入新行,无论如何在电子邮件中这不会发生。奇怪的是,这不会发生在每一行,而只会发生在某些行上。

你知道为什么会发生这种情况吗?你能建议一些检查吗?#13#10在某些情况下,文本电子邮件正文之间是否存在一些可能的冲突?

更新

经过更多调查(感谢您的评论),我意识到这是一个 Outlook 可视化问题,无论如何我仍然不清楚这个问题。

这是在 NotePad++ 中打开的电子邮件的正文(我打开了从 Outlook 保存的 msg 文件),其中还显示了换行符(您可以看到 #13#10 为 CR LF。我用红色和绿色突出显示了 2 个换行符前景有问题(但您可以看到在 NP++ 中它们看起来像所有其他换行符): NotePad++ 中的电子邮件正文

Outlook 中的电子邮件看起来像这样(请注意,Outlook 说邮件有额外的换行符并且它们已被删除,但他提供了恢复它们的选项: Outlook 中的电子邮件显示错误]

选择该选项后,电子邮件就可以了: 在此处输入图像描述

我不明白为什么这只发生在某些换行符上。这是否有助于您更好地理解问题?

4

2 回答 2

6

您可以尝试使用IdMessage.NoEncode := True这样 Body 不会被RCF 821编码。

或者更好地使用现代编码IdMessage.ContentType := 'text/html'并替换#13#10<br>

编辑: 这是一个 Outlook Express 问题。

这里这里。一种解决方法是在每行文本的开头添加 2 个空字符,以使 Outlook 不会删除中断。


请注意,Microsoft 支持还建议使用 HTML 格式作为 Outlook Express 的一种可能的解决方法:

方法 2.使用 HTML 或 Rich Text 格式 您可以在创建新项目时使用 HTML 或 Rich Text 格式。或者,您可以将现有帖子更改为这些格式。

于 2012-01-17T15:15:41.790 回答
1

如果您的 ContentType 是纯文本,则可能是电子邮件客户端删除了一些换行符。

于 2012-01-17T21:33:00.340 回答