根据收件人是通讯组列表来拒绝会议邀请

问题描述 投票:0回答:1

我收到基于旧团队/角色的邀请。如果将它们发送到通讯组列表(我所属的),我想自动拒绝它们。

我不懂VBA。我找到了一个脚本,并将 SenderEmailAddress 替换为 Recipients。我不想运行它,除非确认它可以工作(万一它对我的电子邮件做了一些疯狂的事情)。

Private Sub Application_NewMailEx(ByVal EntryIDCollection As String)
    Dim xEntryIDs
    Dim xItem
    Dim i As Integer
    Dim xMeeting As MeetingItem, xMeetingDeclined As MeetingItem
    Dim xAppointmentItem As AppointmentItem
    On Error Resume Next
    xEntryIDs = Split(EntryIDCollection, ",")
    For i = 0 To UBound(xEntryIDs)
        Set xItem = Application.Session.GetItemFromID(xEntryIDs(i))
        If xItem.Class = olMeetingRequest Then
            Set xMeeting = xItem
            xMeeting.ReminderSet = False
            If VBA.LCase(xMeeting.Recipients) = VBA.LCase("[email protected]") Then 
                Set xAppointmentItem = xMeeting.GetAssociatedAppointment(True)
                xAppointmentItem.ReminderSet = False
                Set xMeetingDeclined = xAppointmentItem.Respond(olMeetingDeclined)
                xMeetingDeclined.Body = "Declined"
                xMeetingDeclined.Send
                xMeeting.Delete
            End If
        End If
    Next
End Sub
vba email outlook distribution-list
1个回答
0
投票

您无法通过以下方式将 Recipients 集合与字符串进行比较:

If VBA.LCase(xMeeting.Recipients) = VBA.LCase("[email protected]") Then

MeetingItem.Recipients 属性返回一个 Recipients

 集合,表示 Outlook 项目的所有收件人。使用 
Recipients(index)
(其中 
index
 是名称或索引号)返回单个 
Recipient
 对象。该名称可以是表示收件人的显示名称、别名或完整 SMTP 电子邮件地址的字符串。

Recipient.DisplayType 属性返回一个属于 OlDisplayType 枚举的常量,用于描述 Recipient

 的性质。您似乎对 
olDistList
olPrivateDistList
 值感兴趣。

我还注意到以下代码行:

xEntryIDs = Split(EntryIDCollection, ",")

NewMailEx

 行为在 10 多年前就已经发生了变化,现在它是针对每个 Outlook 项目单独触发的。因此,无需在事件处理程序中拆分字符串,参数仅包含单个条目 ID 值。

© www.soinside.com 2019 - 2024. All rights reserved.