为什么我的 D2009 exe 会生成带有名为 ATTnnnnn.DAT 的附件的电子邮件,而在 D2007 中编译的相同源代码会生成带有正确命名为原始文件名的附件的电子邮件?
我正在使用 D2007 和 D2009 附带的相应 Indy 库。附件中没有原始文件名会导致用户无法双击附件将其打开(附件通常是 Excel 电子表格)。
注意:代码是相同的 - 只是编译器和 Indy 库有所不同。 D2009 exe 发送的附件可以保存并重命名为 zzzz.xls,然后可以正确打开 - 即电子邮件和附件正确通过 - 只是电子邮件附件文件名被搞乱了。
有人建议附件标头已损坏。印地已经被打破了吗?要重现的代码是可以在许多网站上找到的库存标准代码,但如果需要,我可以发布。提前谢谢。
我发现了问题 - 请参阅 adug.com.au 邮件列表了解确切信息
解决方案的细节,但总而言之——即将推出的 Indy 版本
D2009(版本 10.2.5)的 IdMessageClient.pas 单元中有 2 个错误
在附件部分处理中设置 name= 和 filename= 的两行
(内存中的一个行号是 1222,另一个是早几行;
抱歉,我现在在家;我今晚在工作中解决了问题)。缺少这些分号会导致附件标头格式错误,并且 Outlook 会为附件生成自己的名称。
修复方法是在输出 name= 或之前输出分号 (;)
文件名=标记。那么印地需要重建。
我对比了D2007
Indy 版本(10.1.5),可以看到它总是将分号放在
Content-Type 行的末尾,从而避免了已经出现的问题
D2009 附带的版本。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)