2011-01-11 61 views

回答

2

您是否正在制作Outlook加载项?有一个事件名为Application.ItemSend,在项目发送之前引发。我刚刚启动了VS2010,创建了一个类型为Outlook 2007加载项的新项目,其中包含下面的代码,并且当我单击从Outlook发送时,按预期激活了我的Application_ItemSend

Public Class ThisAddIn 

    Private Sub ThisAddIn_Startup() Handles Me.Startup 

    End Sub 

    Private Sub ThisAddIn_Shutdown() Handles Me.Shutdown 

    End Sub 

    Private Sub Application_ItemSend(ByVal Item As Object, ByRef Cancel As Boolean) Handles Application.ItemSend 
     System.Windows.Forms.MessageBox.Show("Hi") 
    End Sub 
End Class 

编辑

如果你让你用同样的方法WinForms应用程序,但你“看到”不同了一点。可能有点令人困惑的是,该事件是在应用程序级而不是从邮件项目本身提出的。

Public Class Form1 
    ''//Holds a reference to our mail application 
    Private WithEvents OA As Microsoft.Office.Interop.Outlook.Application 

    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load 
     ''//Either launches Outlook or snaps to the current running one 
     OA = New Microsoft.Office.Interop.Outlook.Application() 
    End Sub 

    Private Sub OA_ItemSend(ByVal Item As Object, ByRef Cancel As Boolean) Handles OA.ItemSend 
     MessageBox.Show("Hello") 
    End Sub 
End Class 
+0

不,我没有创建Outlook加载项,也许我应该?我有一个Windows Forms项目,我需要在创建(通过MAPI)电子邮件发送后更新数据库。 – Zolomon 2011-01-11 14:35:33

0

VBA和VB.NET都使用“Outlook对象模型”。发送事件被省略是很奇怪的。但是,您仍然有这个event

我不是很多VB人,但是由于MAPI面向C++,在VB.net中使用它听起来不是很流畅,但MailItem大致对应于LPMESSAGE。各种outlook插件框架都有相当好的通知系统。如果您需要单独使用MAPI,请检查MAPI events,但这并不容易。

相关问题