在 Access 中处理 Outlook MailItem 发送事件

Posted

技术标签:

【中文标题】在 Access 中处理 Outlook MailItem 发送事件【英文标题】:Handle Outlook MailItem Send Event in Access 【发布时间】:2014-02-24 20:06:36 【问题描述】:

我正在尝试寻找一种方法来从 Access 中捕获 Outlook 中的 MailItem.Send 事件。我创建了一个类来设置对象并且工作正常,但事件处理程序似乎没有做任何事情。

这是我创建的类(命名为OutlookHandler):

Public WithEvents app As Outlook.Application
Public WithEvents msg As Outlook.MailItem


Private Sub Class_Initialize()

    Set app = CreateObject("Outlook.Application")
    Set msg = app.CreateItem(olMailItem)

End Sub


Private Sub msg_Send(Cancel As Boolean)

    MsgBox "Message Sent!"

End Sub

这是我创建该类实例的函数:

Public Function test()

    Dim ol As New OutlookHandler

        With ol.msg
            .To = "mike@anywhere.com"
            .Subject = "outlook event test"
            .Display
        End With


End Function

当我运行test 时,电子邮件会创建并显示。当我在电子邮件中点击发送时,电子邮件发送但消息框永远不会创建。我错过了什么?

【问题讨论】:

【参考方案1】:

您需要通过这种方式公开您的ol variable

Dim ol As OutlookHandler
Public Function test()

    'Dim ol  As New OutlookHandler
    Set ol = New OutlookHandler

        With ol.msg
            .To = "mike@anywhere.com"
            .Subject = "outlook event test"
            .Display
        End With


End Function

【讨论】:

我认为ol variable 实际上不必公开。调暗后确实需要将其设置为新实例,但您可以在测试函数中调暗它 @HelloW - 如果你在 Dim oltest 那么它不是全局的,一旦 test 完成它就会超出范围。一旦超出范围,就无法响应任何事件。 @TimWilliams 感谢您的解释。我没有看到那个细节。

以上是关于在 Access 中处理 Outlook MailItem 发送事件的主要内容,如果未能解决你的问题,请参考以下文章

NodeJS Mail listener2 正在将电子邮件签名图像作为附件下载到 Outlook 中,如何阻止它?

从 Access 中打开 Outlook 的后期绑定

c#代码怎么通过outlook发邮件

从 Access 中的 VBA 调用时 Outlook.exe 进程未结束

text Configuracion Correo gmail electronico email mail outlook

Python 调用outlook发送邮件(转 )