为什么在某些情况下使用idSMTP发送的电子邮件无法正常进入新行?

时间:2012-01-17 14:06:13

标签: delphi indy indy10

我使用TIdMessageTIdSMTP发送纯文字电子邮件。

对于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行在outlook中有问题的中断(但你可以看到在NP ++中它们看起来像所有其他的换行符): Email body in NotePad++

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

选择该选项后,电子邮件就可以了: enter image description here

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

2 个答案:

答案 0 :(得分:6)

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

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

修改 这是Outlook Express问题。

查看HereHere。   解决方法是在每行文本的开头添加2个空字符,以使Outlook不删除中断。


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

  

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

答案 1 :(得分:1)

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