Outlook发送事件类

背景:
前一段时间,我发现了一个类模块来从outlook获取事件,具体来说,正如标题所示,我正在使用它来捕获发送事件项 – 要知道它是否真的被发送。 这是Class模块本身。 我不记得我曾经怎么称呼它(我只是保存它为以后的引用,但是,删除的方式来调用它在我的主要子)。

Option Explicit Public WithEvents itm As Outlook.MailItem Private Sub itm_Send(Cancel As Boolean) Dim blnSent As Boolean On Error Resume Next blnSent = itm.Sent If Err.Number = 0 Then Debug.Print "Email not sent" Else Debug.Print "Email sent") End If End Sub 

问题:
我忘了我应该如何在发送电子邮件的子文件中调用它。 我已经在顶部尝试了以下声明:

 Dim itmevt As New CMailItemEvents Public EmailToSend As Outlook.MailItem 

然后在我的小组发送电子邮件:

 Set itmevt.itm = EmailToSend 

但是,我不能得到在课堂上触发的事件。

具体问题:
1.我如何正确地调用课程?
2.我怎样才能得到发送/不发送的价值(我想写在一个单元格中,以便以后分析 – 发送/不发送)我想到parsing到一个公共的function,可以得到值那个叫它的子,但是,我不认为这是最好的方法

从我所能锻炼的这个class上来看,有点虚伪。 正确的用法是Set itmevt.itm = OutApp.CreateItem(0) 。 问题在于使用Send事件来testing项目是否被发送。 注意事件的Cancel参数。 设置Cancel = True阻止电子邮件被发送。 这告诉我们,如果电子邮件不发送,直到这个事件完成后。 发送将始终返回false,不会从发送事件中导致错误。

另一方面,如果我们在发送邮件后testingMailItem.Sent,它会抛出一个The item has been moved or deleted. 错误。

在这里输入图像说明

知道我们可以创build一个函数,发送我们的电子邮件,如果电子邮件发送将返回True,否则返回False。

 Function SendEmail(addressTo As String, addressCC As String, Subject As String, HTMLBody As String) As Boolean Dim OutApp As Object Set OutApp = CreateObject("Outlook.Application") With OutApp.CreateItem(0) .To = addressTo .CC = addressCC 'OutMail.BCC = "" .Subject = Subject .HTMLBody = HTMLBody .Send On Error Resume Next Call .Sent SendEmail = Err.Number <> 0 If Err.Number = 0 Then Debug.Print "Email not sent" Else Debug.Print "Email sent" End If On Error GoTo 0 End With Set OutApp = Nothing End Function