【问题标题】:Outlook script that runs when email is received works only when I transfer the new mail to myself收到电子邮件时运行的 Outlook 脚本仅在我将新邮件传输给自己时才有效
【发布时间】:2018-09-20 13:51:36
【问题描述】:

我编写了一个代码,它将接收特定文件夹中的传入电子邮件(首先创建一个规则以便将邮件移动到该文件夹​​,然后启动脚本)。

问题是规则有效(它将邮件移动到文件夹),但脚本无效。

问题是当我收到新邮件并将其传输给自己时(我的电子邮件也在规则中的接收者中),脚本正常工作。

这是我认为可能是错误的代码的开头。

Sub Script(item As Outlook.MailItem) 


Dim strMailID As String
Dim objMail As Outlook.MailItem
Dim objNamespace As Outlook.NameSpace

strMailID = item.EntryID
Set objNamespace = Application.GetNamespace("MAPI")
Set objMail = objNamespace.GetItemFromID(strMailID)
Dim objpf As MAPIFolder

If objMail.MessageClass = "IPM.Note" Then

任何帮助将不胜感激

【问题讨论】:

    标签: vba outlook


    【解决方案1】:

    您需要在默认的本地收件箱中添加一个事件侦听器,它适用于 Outlook 2016。

    此代码将向默认本地收件箱添加一个事件侦听器。将对收到的电子邮件采取行动。您需要在下面的代码中添加您需要的操作:

                    Private WithEvents Items As Outlook.Items 
                    Private Sub Application_Startup() 
                    Dim olApp As Outlook.Application 
                    Dim objNS As Outlook.NameSpace 
                    Set olApp = Outlook.Application 
                    Set objNS = olApp.GetNamespace("MAPI") 
                    ' default local Inbox
                    Set Items = objNS.GetDefaultFolder(olFolderInbox).Items 
                    End Sub
                    Private Sub Items_ItemAdd(ByVal item As Object) 
    
                    On Error Goto ErrorHandler 
                     Dim Msg As Outlook.MailItem 
                     If TypeName(item) = "MailItem" Then
                    Set Msg = item 
                    ' ******************
                    ' do something here
                    ' ******************
                    End If
                    ProgramExit: 
                      Exit Sub
                    ErrorHandler: 
                    MsgBox Err.Number & " - " & Err.Description 
                    Resume ProgramExit 
                    End Sub
    

    将代码粘贴到 ThisOutlookSession 模块后,您必须重新启动 Outlook。

    【讨论】:

    • 谢谢,我试过这段代码,但宏不再出现在规则中。
    • 你可以试试这个网址:tachytelic.net/2017/10/…。另外,在上层代码中收到邮件时是否有用。
    • 没关系,我刚刚意识到脚本会在 Outlook 启动时自行启动,所以我不需要在规则中调用它,对吗?此外,我是否需要将新闻邮件检查为已读,以便在下次启动 Outlook 时脚本不会在未读邮件上运行?非常感谢
    • 是的,你不需要调用它。因为“Application_Startup()”将在 Outlook 启动时自动执行宏。您可以检查新闻邮件是否已读。
    • 非常感谢,它就像一个魅力,而且比以前更快!
    猜你喜欢
    • 2023-03-06
    • 1970-01-01
    • 1970-01-01
    • 2011-12-07
    • 1970-01-01
    • 2014-05-01
    • 2021-11-03
    • 1970-01-01
    • 2011-08-08
    相关资源
    最近更新 更多