两个VSTO加载项可以处理同一个Outlook应用程序事件(application.newmailex)

时间:2018-10-15 14:14:36

标签: vb.net vsto outlook-addin

我正在为我工​​作的两个部门编写两个加载项。当它们到达时,它们都将处理不同类型的电子邮件,尽管它们都是相当大的加载项,但我宁愿避免将两者合并。话虽如此,有些人最终将不得不同时运行两个加载项。

是否可以同时安装两个外接程序,并且它们两个都具有处理application.newmailex的子程序?

我可以吃吗

插件1:

Private Sub Application_NewMailEx(EntryIDCollection As String) Handles Application.NewMailEx

    For Each itemID In Split(EntryIDCollection, ",")
        Dim item = Application.Session.GetItemFromID(itemID)
        If TypeName(item) = "MailItem" Then
              if item.subject.contains("team1:") then
                   'do stuff
              end if
        end if
    next
end sub

加载项2:

Private Sub Application_NewMailEx(EntryIDCollection As String) Handles Application.NewMailEx

    For Each itemID In Split(EntryIDCollection, ",")
        Dim item = Application.Session.GetItemFromID(itemID)
        If TypeName(item) = "MailItem" Then
              if item.subject.contains("team2:") then
                   'do stuff
              end if
        end if
    next
end sub

还是我必须维护一个大插件:

Private Sub Application_NewMailEx(EntryIDCollection As String) Handles Application.NewMailEx

    For Each itemID In Split(EntryIDCollection, ",")
        Dim item = Application.Session.GetItemFromID(itemID)
        If TypeName(item) = "MailItem" Then
              if item.subject.contains("team1:") then
                   'do stuff
              else if item.subject.contains("team2:") then
                   'do other stuff
              end if
        end if
    next
end sub

1 个答案:

答案 0 :(得分:2)

是的,可以将两个不同的加载项安装到同一Outlook中。显然,它们可能具有相同的事件处理程序,这没有问题(您无需合并任何内容)。您唯一无法控制的是这两个外接程序的通知顺序。您的“外接程序1”可能会第一个或第二个获得Application_NewMailEx,而您的“外接程序2”的结果则相同。编码时请记住这一点。