Проверка, включен ли адрес электронной почты для автоматических ответов (OOF) - PullRequest
1 голос
/ 11 октября 2019

Сначала просто хочу сказать спасибо за проделанную вами работу по выкупу.

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

Я испробовал варианты получения OOF через VBA, но с моей собственной пробой и ошибками и поиском в Google я вижу, что большинство людей (и я) осознают, что это возможно толькополучите вашу собственную OOF-информацию.

Sub Check_OOF()

    Dim oNS As Outlook.NameSpace
    Dim oStores As Outlook.Stores
    Dim oStr As Outlook.Store
    Dim oPrp As Outlook.PropertyAccessor

    Set oNS = Outlook.GetNamespace("MAPI")
    Set oStores = oNS.Stores

    For Each oStr In oStores
        If oStr.ExchangeStoreType = olPrimaryExchangeMailbox Then
            Set oPrp = oStr.PropertyAccessor
            MsgBox oPrp.GetProperty("http://schemas.microsoft.com/mapi/proptag/0x661D000B")
        End If
    Next

End Sub

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

Спасибо за вашу помощь заранее.

Ответы [ 2 ]

1 голос
/ 11 октября 2019

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

Я установил выкуп, загрузив здесь и установив его через командную строку (спасибо за ясныйинструкции). Я использую объект RDOMailTips, который позволил мне циклически перемещаться по почтовым ящикам и получать OOF-сообщения и другую полезную информацию.

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

Sub Get_OOF()

Dim session As Redemption.RDOSession
Dim arr As Variant

Set session = CreateObject("Redemption.RDOSession")
session.Logon
session.SkipAutodiscoverLookupInAD = True

 arr = Array("user1@email.com", "user2@email.com", "user3@email.com")

 For i = LBound(arr) To UBound(arr)
    Set AdrEntry = session.AddressBook.ResolveName(arr(i))
    Set mailtips = AdrEntry.GetMailTips
    Debug.Print mailtips.OutOfOfficeMessage
    Debug.Print mailtips.OutOfOfficeEndTime
    Debug.Print mailtips.OutOfOfficeStartTime
Next i

Set session = Nothing
Set AdrEntry = Nothing
Set mailtips = Nothing

End Sub

Четыре вещи на заметку

  1. Если у человека нет офиса, он вернет пустую строку
  2. Если человек не установил даты выхода из офиса, он вернет 01.014501, который, как я полагаю, является кодом ошибки, отформатированным как дата
  3. . Вам нужно будет отделить строку от mailtips.OutOfOfficeMessage, так как она имеетмного различий в форматировании вокруг текста об отсутствии на работе
  4. Мне не нужно было указывать свои учетные данные в параметрах AdrEntry.GetMailTips, чтобы это работало. Но, как говорится в документации, для EWS это необязательно.
1 голос
/ 11 октября 2019

Вам нужно будет использовать EWS - Операция GetMailTips .

Также вы можете использовать Погашение , для получения дополнительной информации см. Объект RDOMailTips .

...