【问题标题】:Cannot find event for update new mail in Outlook addin在 Outlook 插件中找不到更新新邮件的事件
【发布时间】:2015-03-20 23:12:17
【问题描述】:

我正在为 Outlook 开发插件,我需要为每封新邮件应用一些开始文本格式。 我的问题是我找不到合适的地方来调用我的代码。 我需要一些 ActiveInspector.CurrentItem 已经存在的事件/回调。

MailItem.NewMail,如果我理解正确的话,意思是保存项目,而不是在检查器中打开新的空邮件。

接下来我发现了 MailItem.Open 事件,它可能就是我要找的。但这是项目实例的事件,所以首先我需要在创建新项目并将处理程序添加到它的 Open 事件时,但我可以在哪里做呢?

我正在尝试将处理程序添加到 Application.Inspectors.NewInspector 并从该处理程序将另一个添加到 MailItem.Open,但 NewInspector 在第一个检查器创建时仅调用一次。我知道每个封闭的检查员都不会删除,而只是隐藏,并且只有在隐藏检查员的保留结束时才会创建新的检查员。但是 NewInspector 只调用了一次,这对我来说真的很奇怪。

C#,Outlook 2007,不使用 VSTO。

【问题讨论】:

    标签: c# outlook add-in


    【解决方案1】:

    Application.Inspectors.NewInspector 如果您将引发事件的 Inspectors 对象保留在全局(类)变量中以确保它不会被垃圾收集,那么 Application.Inspectors.NewInspector 将很好地触发。

    【讨论】:

    • 谢谢,它有帮助。现在每次打开新窗口时都会引发 NewInspector。但对我来说,这很奇怪。为什么 Outlook 不保留 Inspectors 变量的值?
    • 因为您的代码会释放它 - 当您调用“Application.Inspectors.NewInspector += ...”时,编译器会创建一个临时变量来保存 Application.Inspectors 的值。一旦垃圾收集器运行并释放它,该对象就不会引发任何事件
    • 我不认为值 Application.Inspectors 是动态创建的。我总是习惯于返回一个动态创建的对象方法类 GetSomething。好习惯跟我开了个残酷的玩笑:)
    猜你喜欢
    • 2016-02-07
    • 1970-01-01
    • 2022-01-26
    • 2022-07-23
    • 2019-10-09
    • 2015-02-15
    • 2018-12-04
    • 1970-01-01
    • 2011-08-30
    相关资源
    最近更新 更多