我正在使用TIdMessage
,当我分配空主题时,例如IdMsg->Subject = "";
外发邮件没有"Subject:"
标题。
如果我通过填充空格来添加主题,例如IdMsg->Subject = " ";
然后消息具有Subject:标题,即使它修剪了空格 - 输出不是:"Subject:[sp][sp][cr][lf]"
但它是"Subject:[cr][lf]"
。这显然与冒号之后和实际数据之前都有空格的其余标题不一致,因此空主题应为"Subject:[sp][sp][cr][lf]"
。
我理解TIdMessage
尝试通过删除标题或修剪它们来优化消息,但这只是太聪明了。
有没有办法强制使用Subject
标题后面有2个空格(不编辑TIdMessage源代码)?
对于那些想知道原因的人 - 我想确保愚蠢的电子邮件阅读程序/脚本正确地解释为“空主题”这是所有这一切的原因而不是其他东西并删除主题:标题不是很多无论如何都要进行优化。
答案 0 :(得分:2)
当TIdMessageClient
生成正在发送的标头数据时,您的空间字符实际上在编码过程中存活,但是当它解析最终标头数据并折叠长标头时,空间将被TIdHeaderList
修剪。适合电子邮件行长度限制。折叠过程为给定标题生成的每一行都经过右调整,因为标题数据只包含空格,所以它会被丢弃。
禁用该折叠的唯一方法是将TIdMessage.LastGeneratedHeaders.FoldLines
属性设置为False,除非您知道标题总是足够短以至于不需要折叠,否则这是不可取的。
另一个选项是将TIdMessage.Subject
设置为空字符串,然后使用TIdMessage.ExtraHeaders
属性。您必须使用ExtraHeaders.Add()
而不是ExtraHeaders.Values
,以便按原样添加字符串并避免折叠:
Msg.ExtraHeaders.Add('Subject: ');