【问题标题】:Adding Tprogressbar to track transfer time on events to Tidsmtp using IdSSLOHandler, IdMessage and Idatachmentfile添加 Tprogressbar 以使用 IdSSLOHandler、IdMessage 和 Idatachmentfile 跟踪事件到 Tidsmtp 的传输时间
【发布时间】:2012-09-10 22:23:18
【问题描述】:

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

当我尝试模拟代码时,它发生在它向我发送connection closed gracefully 的消息之前,我看到了另一个帖子,其中Remy Lebeau 提出了类似的Need Delphi 6 example for updating a progress bar during TIdSmtp send operation, especially for large attachments

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

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

【问题讨论】:

    标签: delphi smtp progress-bar delphi-xe2 indy10


    【解决方案1】:

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-10-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-11-17
      • 1970-01-01
      相关资源
      最近更新 更多