0

我查看了http://www.delphigroups.info/2/93/183240.html,其中 Lee J Coo 给出了一个使用 TidSmtp 和 idmessage 制作电子邮件发送进度跟踪表单的示例。

当我尝试模拟代码时,它发生在它向我发送任何消息之前,我connection closed gracefully看到了另一个帖子,其中Remy Lebeau建议类似的需要 Delphi 6 示例,用于在 TIdSmtp 发送操作期间更新进度条,尤其是对于大型附件

我不知道是不是有什么问题TIdAttachmentFile.Create(Idmessage1.MessageParts,)

我正在努力解决这个问题,但是查看了使用 savetofile 而不是 savetostream 之类的建议,这件事connection closed gracefully似乎很常见,不能对问题提供太多见解,但也许有人可以从经验中看出。

4

1 回答 1

0

正如我在对另一个问题的回答中所说,Indy 10TIdEventStream在单元中有一个类IdGlobal,您可以使用它来跟踪TIdMessage.SaveToStream()编码的字节数,而无需浪费任何内存或文件系统空间。单位中还有一个私人TIdCalculateSizeStream班级IdMultipartFormDataStream做同样的事情。您可以将该类复制到您的项目代码中。

如果您在使用任一类时遇到问题,您需要提供具体的详细信息。

话虽如此,您应该在连接到 SMTP 服务器之前对电子邮件进行“编码”以获得其估计大小,而不是在连接之后。如果编码需要一段时间,则 SMTP 服务器可能会超时并在您有机会调用Send()以传输电子邮件之前关闭连接(这将再次对其进行重新编码,并且与第一个临时编码)。

于 2012-09-11T21:57:55.330 回答