Delphi TIdMessage必填主题字段
我正在使用Delphi TIdMessage必填主题字段,delphi,c++builder,indy,Delphi,C++builder,Indy,我正在使用TIdMessage并且当我分配空主题时,例如IdMsg->subject=“”传出消息没有主题:标题 如果我使用空格添加主题,例如IdMsg->subject=“”则消息有Subject:header,即使它修剪了空间-输出不是:“Subject:[sp][sp][cr][lf]”,而是“Subject:[cr][lf]”。这显然与其他标题不一致,这些标题在冒号之后和实际数据之前都有空格,因此空主题应该是“subject:[sp][sp][cr][lf]” 我知道TIdMessage
TIdMessage
并且当我分配空主题时,例如IdMsg->subject=“”代码>传出消息没有主题:
标题
如果我使用空格添加主题,例如IdMsg->subject=“”
则消息有Subject:header,即使它修剪了空间-输出不是:“Subject:[sp][sp][cr][lf]”
,而是“Subject:[cr][lf]”
。这显然与其他标题不一致,这些标题在冒号之后和实际数据之前都有空格,因此空主题应该是“subject:[sp][sp][cr][lf]”
我知道TIdMessage
试图通过删除标题或修剪标题来优化消息,但这太聪明了
有没有办法强制在主题
标题后面有两个空格(不编辑TIdMessage源代码)
对于那些想知道原因的人-我想确保愚蠢的电子邮件阅读程序/脚本正确地解释为“空主题”这就是所有这些的原因,而不是作为其他的东西和删除主题:头部无论如何都不是一个很好的优化。当
TIdMessageClient
生成要发送的头部数据时,您的空格字符实际上在编码过程中幸存,但是,当解析最终标题数据并折叠长标题以适应电子邮件行长度限制时,空间会被TIdHeaderList
修剪。折叠过程为给定标题生成的每一行都会被右修剪,因为标题数据只包含空格,所以会被丢弃
禁用该折叠的唯一方法是将TIdMessage.LastGeneratedHeaders.FoldLines
属性设置为False,这是不可取的,除非您知道您的标题总是足够短,永远不需要折叠
另一个选项是将TIdMessage.Subject
设置为空字符串,然后改用TIdMessage.ExtraHeaders
属性。您必须使用ExtraHeaders.Add()
而不是ExtraHeaders.Values
,以便按原样添加字符串并避免折叠:
Msg.ExtraHeaders.Add('Subject: ');
那么有没有一个明智的方法呢?添加自定义标题?我希望你现在不要把它作为一个bug来修复,因为我确实需要将主题作为空的包含进来。。。