【发布时间】:2020-05-21 06:38:49
【问题描述】:
我现在在检查电子邮件是否已发送时遇到问题。到目前为止,我已经尝试了这三种订阅此类事件的方法:
application.ItemSend += ApplicationOnItemSend;application.Session.GetDefaultFolder(Microsoft.Office.Interop.Outlook.OlDefaultFolders.olFolderOutbox).Items.ItemAdd += ItemsOnItemAdd;-
application.Session.GetDefaultFolder(Microsoft.Office.Interop.Outlook.OlDefaultFolders.olFolderSentMail).Items.ItemAdd += ItemsOnItemAdd2;
当 Outlook 完全打开时,所有这三个都很好,当您打开一个 msg 文件而 Outlook 没有在后台打开时,我的问题就出现了。在这些情况下,您看到的只是“新消息”窗口,当您从那里发送邮件时,这些事件都不会触发。即使选中了在有网络连接时应尽快发送邮件的选项,邮件也会被放入发件箱,并且在 Outlook 的下一次完全启动时,仍有一封邮件已放入发件箱但未完全发送。即使在我的同事计算机上,没有安装我的 Outlook 插件和设置相同的选项(应该是标准的),邮件只是被放入发件箱时也会出现同样的问题。
我还检查了我尝试订阅这些事件的方式,并且我的事件处理程序都不包含任何阻止后台线程的代码(例如当我使用MessageBox.Show() 进行调试时)。因此,我的任何代码都没有明显的原因阻止发送邮件。
我订阅这些事件的地方似乎也没有什么不同。通常我会在插件启动时订阅,但是在打开 msg 文件时不会调用该方法。因此,我将订阅移至功能区的加载事件。 load 事件打印了我的调试消息,表明该方法已被调用,但 ItemSend/ItemAdd 事件在按下“send”时仍未触发。
所有这些只是 Outlook 出现故障还是有办法检查从“新邮件”窗口发送的邮件?
【问题讨论】:
标签: c# email outlook vsto outlook-addin