当从Outlook发送项目时,我使用ApplicationEvents_11_ItemSendEventHandler
(请参阅itemsendeventhandler.aspx)进行一些处理。
然而,由于此事件触发的是“发送”,而不是“发送”,所以我无法获得某些信息,如发送者、发送时间等。
是否有在项目实际发送后触发的其他事件?我读过这篇博文;http://easyvsto.wordpress.com/2010/07/27/how-to-save-mail-content-when-a-mail-is-sent-from-outlook/,但是我很小心地依赖于出现在“发送的项目”文件夹中的项目,因为用户可以禁用这个功能。
编辑:我应该补充说,我实际上已经尝试过“查看发送的邮件文件夹”的方法,并且注意到ItemAdd
事件似乎只对我发送的第一封电子邮件触发,直到重新启动。我的代码如下;
var sentMail = Application.Session.GetDefaultFolder(Outlook.OlDefaultFolders.olFolderSentMail);
sentMail.Items.ItemAdd += new Outlook.ItemsEvents_ItemAddEventHandler(Items_ItemAdd);
我的方法..。
void Items_ItemAdd(object item)
{
MessageBox.Show(((Outlook.MailItem)item).Subject);
}
发布于 2012-09-20 17:15:55
如果使用模态对话框(WPF/Winforms MessageBox
),则只会得到第一个事件触发器。您必须实现非阻塞事件处理程序(可能是项队列策略)。
不要使用阻塞的UI调用模式对话框- Outlook会注意到UI被阻塞,而忽略触发随后的中断。
见本表格供参考。
如果您担心用户控制发送的项存储的首选项,只需使用以下代码片段覆盖它们.
MailItem.DeleteAfterSubmit = false; // force storage to sent items folder (ignore user options)
Outlook.Folder sentFolder = ThisAddIn.Application.Session.GetDefaultFolder(Outlook.OlDefaultFolders.olFolderSentMail);
if (sentFolder != null)
MailItem.SaveSentMessageFolder = sentFolder; // override the default sent items location
MailItem.Save();
https://stackoverflow.com/questions/12515612
复制相似问题