我收到基于旧团队/角色的邀请。如果将它们发送到通讯组列表(我所属的),我想自动拒绝它们。
我不懂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
您无法通过以下方式将 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 值。