当前位置 : 主页 > 编程语言 > delphi >

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

来源:互联网 收集:自由互联 发布时间:2021-06-23
我正在使用TIdMessage和TIdSMTP发送纯文本电子邮件. 对于Body,我使用一个简单的连接字符串 Body := SomeText + #13#10 + SomeOtherText + #13#10 + SomeMoreText + #13#10 + FinalText; 无论如何,在生成的电子邮件中
我正在使用TIdMessage和TIdSMTP发送纯文本电子邮件.

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

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

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

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

UPDATE

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

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

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

选择该选项后,电子邮件就可以了:

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

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

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

编辑:
这是Outlook Express问题.

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

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

Method 2. Use HTML or Rich Text format You can use HTML or Rich Text formats when you create new items. Or you can change existing posts to these formats.

网友评论