【发布时间】:2012-01-17 14:06:12
【问题描述】:
我正在使用 TIdMessage 和 TIdSMTP 发送纯文本电子邮件。
对于Body,我使用了一个简单的串联字符串,例如
Body := SomeText + #13#10 +
SomeOtherText + #13#10 +
SomeMoreText + #13#10 +
FinalText;
无论如何,在生成的电子邮件中,一些“#13#10”不会被忽略。我记录了Body 变量,我可以看到文本转到新行,无论如何在电子邮件中这不会发生。奇怪的是,这并不是在每一行都发生,而是在某些行上发生。
您知道为什么会发生这种情况吗?你能建议一些检查吗?在某些情况下,#13#10 和文本电子邮件正文之间是否存在一些可能的冲突?
更新
经过更多调查(感谢您的 cmets)我意识到这是一个 Outlook 可视化问题,无论如何我仍然不清楚这个问题。
这是在 NotePad++ 中打开的电子邮件正文(我打开了从 Outlook 保存的 msg 文件),其中还显示了换行符(您可以看到 #13#10 为 CR LF。我用红色和绿色突出显示了 2 行在前景中有问题的中断(但您可以看到在 NP++ 中它们看起来像所有其他换行符):
Outlook 中的电子邮件如下所示(请注意,Outlook 表示邮件有额外的换行符并且它们已被删除,但他提供了恢复它们的选项:
选择该选项后,电子邮件就可以了:
我不明白为什么这只发生在某些换行符上。这是否有助于您更好地理解问题?
【问题讨论】:
-
您使用的是最新的 Indy 版本(10.5.8)吗?
-
您可以使用
IdMessage.ContentType := 'text/html'并将#13#10替换为<br>。 -
@mjn 好点。我肯定有 10.5.8,但在构建机器上我仍然有 Delphi 2009 附带的那个。我现在将升级再试一次。
-
请出示实际生成的邮件并指出您认为的错误之处。
-
我确认 10.5.8 也存在问题。我更新了我的消息,请查看最新部分,看看是否可以提供帮助。