【问题标题】:Move meeting request mail to folder which is not a 'inbox' subfolder将会议请求邮件移动到不是“收件箱”子文件夹的文件夹
【发布时间】:2022-01-21 17:41:20
【问题描述】:

我为主题中包含特定字符串的会议设置了“运行脚本”规则。

Sub AutoDeclineMeetings(oRequest As MeetingItem)

If oRequest.MessageClass <> "IPM.Schedule.Meeting.Request" Then
    Exit Sub
End If

Dim oAppt As AppointmentItem
Set oAppt = oRequest.GetAssociatedAppointment(True)

Dim oResponse
Set oResponse = oAppt.Respond(olMeetingDeclined, True)

End Sub

拒绝后,我想将邮件移动到另一个文件夹(不是“收件箱”子文件夹)并将其标记为已读。

我在“运行脚本”规则之后尝试使用传统规则,但有时它不运行脚本而是移动到文件夹并将其标记为已读。

如何让脚本拒绝会议、移动邮件并将其标记为已读?

【问题讨论】:

    标签: vba outlook


    【解决方案1】:

    您可以在 VBA 中处理 Outlook 应用程序类的 NewMailEx 事件,而无需手动创建规则。 NewMailEx 事件在新邮件到达收件箱时以及在客户端规则处理发生之前触发。该项目可以是几种不同的项目类型之一,例如MailItemMeetingItemSharingItem。您可以使用EntryIDCollection数组中返回的Entry ID调用NameSpace.GetItemFromID方法并处理该项目。

    您也可以考虑处理 Application 类的 ItemAdd 事件,这样您就可以知道何时将项目放入收件箱文件夹。

    【讨论】:

      【解决方案2】:

      将项目作为代码中的最后一个操作移动。

      Option Explicit
      
      Private Sub test()
          AutoDeclineMeetings ActiveInspector.CurrentItem
      End Sub
      
      Sub AutoDeclineMeetings(oRequest As MeetingItem)
      
      If oRequest.MessageClass = "IPM.Schedule.Meeting.Request" Then
          Exit Sub
      End If
      
      Dim oAppt As AppointmentItem
      Set oAppt = oRequest.GetAssociatedAppointment(True)
      
      Dim oResponse
      Set oResponse = oAppt.Respond(olMeetingDeclined, True)
      
      oRequest.UnRead = False
      
      ' Move is the last action to not loses the reference to oRequest
      oRequest.Move Session.GetDefaultFolder(olFolderInbox).Parent.Folders("Test")
      End Sub
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2020-03-10
        • 2021-03-09
        • 1970-01-01
        • 1970-01-01
        • 2010-12-27
        • 1970-01-01
        • 1970-01-01
        • 2015-06-29
        相关资源
        最近更新 更多