Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/email/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Delphi 如何检查Outlook是否已完成发送带有附件的电子邮件?_Delphi_Email_Outlook_Attachment - Fatal编程技术网

Delphi 如何检查Outlook是否已完成发送带有附件的电子邮件?

Delphi 如何检查Outlook是否已完成发送带有附件的电子邮件?,delphi,email,outlook,attachment,Delphi,Email,Outlook,Attachment,当用户需要以PDF格式向其客户发送报告时,我们的Delphi应用程序使用Outlook编程访问。通常不会出现问题,但也有一些报告,其中每个客户都有自己的副本,当客户数超过100时,Outlook会报告错误 我们确实发现了这个问题,因为Outlook使用自动编号,所以Outlook无法创建100多个相同附件名称的临时副本。这篇博客文章就是一个很好的例子 首选的解决方案是从OutlookSecureTempFolder中删除文件,但是在处理过程中我们不能这样做,因为有时Outlook在删除临时文件

当用户需要以PDF格式向其客户发送报告时,我们的Delphi应用程序使用Outlook编程访问。通常不会出现问题,但也有一些报告,其中每个客户都有自己的副本,当客户数超过100时,Outlook会报告错误

我们确实发现了这个问题,因为Outlook使用自动编号,所以Outlook无法创建100多个相同附件名称的临时副本。这篇博客文章就是一个很好的例子

首选的解决方案是从OutlookSecureTempFolder中删除文件,但是在处理过程中我们不能这样做,因为有时Outlook在删除临时文件之前还没有完成发送电子邮件,这会导致类似的错误


在使用.Send之后,是否有办法知道Outlook何时实际发送了电子邮件,并且可以安全地删除临时文件?似乎没有任何回调或事件可供我们使用。

那么,从一次会话中发送超过100封电子邮件可能不是一个好主意?如果在发送50封邮件后关闭Outlook实例,则它应该会关闭并正确清理所有内容。然后,您可以重新创建Outlook对象(启动新实例)并发送接下来的50封电子邮件,以此类推。不是吗?在开始下一个项目之前,请检查“发件箱”中是否没有任何项目?