Я пытаюсь проверить, есть ли получатели моей электронной почты в нашем глобальном списке адресов в Outlook 2016.
Если все получатели являются внутренними (наш глобальный список адресов включает только внутренние адреса), сообщение освобождается.
Если хотя бы один из получателей является внешним (из-за пределов GAL), я должен получить предупреждающее сообщение, которое спросит, хочу ли я по-прежнему отправлять это электронное письмо.
Я пробовал эту тему, но мне нужно решение без копирования адресов во внешнюю электронную таблицу Excel.
Я также работал с этим решением, но наша компания большая и имеет несколько филиалов по всему миру. Приведенное решение проверяет, совпадает ли мой домен с доменами получателей. Проблема возникает, когда я пытаюсь отправить электронное письмо людям из моей компании, но за пределами моего региона - я из EMEA, и, например, Я отправляю электронное письмо в PAM. К сожалению, этого решения недостаточно в данный момент. Поскольку PAM использует другой домен - появляется предупреждение.
Самым простым способом для меня было бы проверить получателей в GAL, но я не уверен, возможно ли это вообще.
Код из второго решения ниже:
Private Sub Application_ItemSend(ByVal Item As Object, Cancel As Boolean)
Dim recips As Outlook.Recipients
Dim recip As Outlook.Recipient
Dim pa As Outlook.propertyAccessor
Dim prompt As String
Dim Address As String
Dim lLen
Dim strMyDomain
Dim internal As Long
Dim external As Long
Const PR_SMTP_ADDRESS As String = "http://schemas.microsoft.com/mapi/proptag/0x39FE001E"
' non-exchange
' userAddress = Session.CurrentUser.Address
' use for exchange accounts
userAddress = Session.CurrentUser.AddressEntry.GetExchangeUser.PrimarySmtpAddress
lLen = Len(userAddress) - InStrRev(userAddress, "@")
strMyDomain = Right(userAddress, lLen)
Set recips = Item.Recipients
For Each recip In recips
Set pa = recip.propertyAccessor
Address = LCase(pa.GetProperty(PR_SMTP_ADDRESS))
lLen = Len(Address) - InStrRev(Address, "@")
str1 = Right(Address, lLen)
If str1 = strMyDomain Then internal = 1
If str1 <> strMyDomain Then external = 1
Next
If internal + external = 2 Then
prompt = "This email is being sent to Internal and External addresses. Do you still wish to send?"
If MsgBox(prompt, vbYesNo + vbExclamation + vbMsgBoxSetForeground, "Check Address") = vbNo Then
Cancel = True
End If
End If
End Sub