检查电子邮件地址是否启用了自动答复 (OOF)



我想遍历电子邮件地址列表并检查它们是否打开了OOF(这些将是其他人的电子邮件地址(。然后,如果可能,检索 OOF 文本。

我尝试了通过VBA获取OOF的选项,但是通过我自己的反复试验和谷歌搜索,我可以看到大多数人(和我自己(意识到只能获得自己的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

这可以通过Outlook-Redemption吗?我只能看到与您自己的自动回复交互的语法。

您将需要使用 EWS - GetMailTips 操作。

您也可以使用兑换,有关详细信息,请参阅 RDOMailTips 对象。

谢谢你为我指出正确的方向尤金,德米特里再次感谢救赎。

我通过在此处下载并通过命令行安装来安装赎回(感谢您的明确说明(。我正在使用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/01/4501,我认为这是一个格式化为日期的错误代码
  3. 您需要将字符串与mailtips.OutOfOfficeMessage分开,因为它在外出文本周围有很多格式绒毛
  4. 我不需要将我的凭据放在AdrEntry.GetMailTips的参数中即可正常工作。但正如文档所说,这对于 EWS 来说是可选的。

相关内容

最新更新