关于delphi:为什么我的D2009 exe会生成带有名为ATTnnnnn.DAT的附件的电子邮件

关于delphi:为什么我的D2009 exe会生成带有名为ATTnnnnn.DAT的附件的电子邮件

why does my D2009 exe produce emails with attachments named ATTnnnnn.DAT

当在D2007中编译的相同源代码生成带有正确命名为原始文件名的附件的电子邮件时,为什么我的D2009 exe生成带有名为ATTnnnnn.DAT的附件的电子邮件?

我正在使用D2007和D2009随附的各个Indy库。附件上没有原始文件名会阻止用户双击附件以将其打开(附件通常是Excel电子表格)。

注意:代码是相同的-只是编译器和Indy库不同。可以保存D2009 exe发送的附件并将其重命名为zzzz.xls,然后正确打开-即电子邮件和附件正确通过-只是搞乱了电子邮件附件文件名。

有人建议附件标题已损坏。 Indy坏了吗?要复制的代码是可以在许多网站上找到的标准股票代码,但是如有必要,我可以发布。提前谢谢。


我发现了问题-请参阅adug.com.au邮件列表以获取确切信息
解决方案的详细信息,但总而言之-随附的Indy版本
D2009(版本10.2.5)的用户在以下位置的IdMessageClient.pas单元中有2个错误
在附件部分处理中设置name =和filename =的两行
(一个行号是内存中的1222,另一个是早几行;
对不起,我现在在家。我今天晚上在工作上修好了东西)。缺少这些分号会导致附件头格式错误,并且Outlook为附件生成自己的名称。

解决方法是在输出名称=或之前输出分号(;)
filename =令牌。然后需要对Indy进行重建。

我比较了D2007
版本(10.1.5),并且可以看到它总是将分号放在
Content-Type行的末尾,从而避免了已经潜入的问题
D2009附带的版本。


我建议更新到当前的Tiburon快照(http://indy.fulgan.com/ZIP)。 Indy版本现在是10.5.7。


理查德的建议对我有用。我比较了正确附件的消息源和Indy的消息源。将分号放在Content-type和Content-disposition之后(确实在1220行附近,并且可以使用。谢谢Richard!


是否已设置IdAttachment.Filename属性?在Indy版本之间,它们可能会更改Filename的工作方式。


恐怕您可能只需要追溯到indy代码即可。 Indy过去有很多错误,所以这可能是原因。如果您跟踪,则应该很快找到它。


推荐阅读