首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Outlook中“已发送”项上的事件

Outlook中“已发送”项上的事件
EN

Stack Overflow用户
提问于 2012-09-20 15:12:21
回答 1查看 8.4K关注 0票数 7

当从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事件似乎只对我发送的第一封电子邮件触发,直到重新启动。我的代码如下;

代码语言:javascript
运行
复制
var sentMail = Application.Session.GetDefaultFolder(Outlook.OlDefaultFolders.olFolderSentMail);
sentMail.Items.ItemAdd += new Outlook.ItemsEvents_ItemAddEventHandler(Items_ItemAdd);

我的方法..。

代码语言:javascript
运行
复制
void Items_ItemAdd(object item)
{
    MessageBox.Show(((Outlook.MailItem)item).Subject);
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-09-20 17:15:55

如果使用模态对话框(WPF/Winforms MessageBox),则只会得到第一个事件触发器。您必须实现非阻塞事件处理程序(可能是项队列策略)。

不要使用阻塞的UI调用模式对话框- Outlook会注意到UI被阻塞,而忽略触发随后的中断。

本表格供参考

如果您担心用户控制发送的项存储的首选项,只需使用以下代码片段覆盖它们.

代码语言:javascript
运行
复制
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(); 
票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12515612

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档