Vb.net Outlook加载项应用程序.ItemSend未运行

Vb.net Outlook加载项应用程序.ItemSend未运行,vb.net,vsto,outlook-addin,Vb.net,Vsto,Outlook Addin,我正在开发一个在发送电子邮件时运行的加载项。如果邮件包含特定文本,则会取消发送邮件并将其移动到草稿中。这在直接从Outlook发送电子邮件时有效,但在其他程序生成电子邮件并通过Outlook发送时不会运行。在这种情况下,电子邮件会进入发件箱几秒钟,然后像平常一样发送 Private Sub OnItemSend(Item As System.Object, ByRef Cancel As Boolean) _ Handles Application.Item

我正在开发一个在发送电子邮件时运行的加载项。如果邮件包含特定文本,则会取消发送邮件并将其移动到草稿中。这在直接从Outlook发送电子邮件时有效,但在其他程序生成电子邮件并通过Outlook发送时不会运行。在这种情况下,电子邮件会进入发件箱几秒钟,然后像平常一样发送

Private Sub OnItemSend(Item As System.Object, ByRef Cancel As Boolean) _
                   Handles Application.ItemSend


    Dim mail As Outlook.MailItem = TryCast(Item, Outlook.MailItem)
    Dim myNameSpace As Outlook.NameSpace
    Dim myDestFolder As Outlook.Folder
    Dim mydrafts As Outlook.Folder
    myNameSpace = Application.GetNamespace("MAPI")
    mydrafts = myNameSpace.GetDefaultFolder(OlDefaultFolders.olFolderDrafts)
    myDestFolder = mydrafts
    If InStr(mail.Body, "Message") = 1 Then

        Cancel = True
        mail.Move(myDestFolder)



    End If


End Sub

另一个节目是什么?如果消息是使用扩展MAPI发送的,
Application.ItemSend
将不会启动。

另一个程序是竞标软件,我们只需继续。我不确定它是如何发送电子邮件的,只是它通过Outlook发送。您是否看到OutlookSpy中触发的事件(单击应用程序,转到事件选项卡,查看窗口底部的日志)?唯一触发的事件是在我收到电子邮件时(我将其发送给自己)。发送时未发生任何事件。如果要取消邮件提交,则无法执行任何操作。是否有一种方法可以在将项目添加到发件箱文件夹而不是ItemSend事件时使其运行?