我使用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行在outlook中有问题的中断(但你可以看到在NP ++中它们看起来像所有其他的换行符):
Outlook中的电子邮件看起来像这样(请注意,outlook显示该邮件有额外的换行符,并且已被删除,但他提供了恢复它们的选项:
选择该选项后,电子邮件就可以了:
我不明白为什么这只会在某些换行符时发生。这有助于您更好地理解问题吗?
答案 0 :(得分:6)
您可以尝试使用IdMessage.NoEncode := True
,以便Body不会被RCF 821编码。
或者更好地使用现代编码IdMessage.ContentType := 'text/html'
并将#13#10
替换为<br>
修改强> 这是Outlook Express问题。
查看Here和Here。 解决方法是在每行文本的开头添加2个空字符,以使Outlook不删除中断。
请注意,Microsoft支持还建议使用HTML格式作为Outlook Express的可能解决方法:
方法2. 使用HTML或RTF格式 您可以在创建新项目时使用HTML或RTF格式。或者您可以将现有帖子更改为这些格式。
答案 1 :(得分:1)
如果您的ContentType是纯文本,可能是电子邮件客户端剥离了一些换行符。