Outlook VBA: как заблокировать электронные письма, отправленные группе в .To и .Cc - PullRequest
0 голосов
/ 26 октября 2018

Я хочу, чтобы мой VBA запрашивал подтверждение каждый раз, когда я пытаюсь отправить электронное письмо группе.

Я придумал следующий код, который отлично работает, но только для отправки электронных писем человеку:

Option Explicit

Private Sub Application_ItemSend(ByVal Item As Object, Cancel As Boolean)

Dim prompt As String
On Error Resume Next

   Select Case LCase(Item.To)
      Case "alias@gmail.com" ' , "alias2@domain3.com", "alias3@domain3.com"

        prompt = "You are sending this to " & Item.To & ". Are you sure you want to send the Mail?"
            If MsgBox(prompt, vbYesNo + vbQuestion + vbMsgBoxSetForeground, "Check Address") = vbNo Then
                Cancel = True
            End If

      Case Else

        Item.Send

   End Select

End Sub

Однако я не могу изменить «alias@gmail.com» группой контактов, которую я создал. Можно ли ввести группу вместо адресов электронной почты? Если да, то как?

Моя конечная цель - разрешить отправлять мои электронные письма определенным группам, только если они находятся в скрытой папке.

Примечание : я вижу, что Outlook распознает группы, так как приведенный выше код не работает, если я отправляю сообщение электронной почты группе, содержащей один (один) адрес электронной почты alias@gmail.com

Ответы [ 2 ]

0 голосов
/ 30 октября 2018

Я придумал свой ответ:

Private Sub Application_ItemSend(ByVal Item As Object, Cancel As Boolean)

Dim prompt As String
Dim GROUP1 As String
Dim GROUP2 As String

GROUP1 = "GROUP of People"
GROUP2 = "personx@yahoo.com"

    If InStr(Item.To, GROUP1) > 0 Or InStr(Item.To, GROUP2) Then
        prompt = "This Email is sent to the wrong person/Groups in .To"
            MsgBox (prompt)
            Cancel = True

    End If

    If InStr(Item.CC, GROUP1) > 0 Or InStr(Item.CC, GROUP2) Then
        prompt = "This Email is sent to the wrong person/Groups in .Cc"
            MsgBox (prompt)
            Cancel = True
    End If


End Sub

Это позволяет мне остановиться, если какая-либо группа или человек, которого я написал поверх кода, находятся в получателях. Но это работает, если они находятся в Bcc.

0 голосов
/ 27 октября 2018

Вам нужно будет перебирать объекты Recipient в коллекции MailItem.Recipients. Затем получите объект Recipient.AddressEntry от каждого получателя и посмотрите, есть ли AddressEntry.AddressEntryUserType = olOutlookDistributionListAddressEntry. Это скажет, если вы, если это контактная группа Outlook (DL).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...