我想按域(可能还有用户)组织文件夹中的邮件。我有一个脚本,但它无法从 Exchange 用户获取 SMTP 地址。下面的代码是地址提取器的摘录。
///For each obj in objFolder.Items
If obj.SenderEmailAddress = "EX" Then
Set objSender = obj.Sender
If Not (objSender Is Nothing) Then
Set objExchUser = Sender.GetExchangeUser()
If Not (objExchUser Is Nothing) Then
strSender = objExchUser.PrimarySmtpAddress
End If
End If
Else
If obj.SenderEmailAddress = "" Then
strSender = "[email protected]"
Else
MsgBox obj.SenderEmailAddress
'MsgBox obj.PrimarySmtpAddress 'errs out
'MsgBox Sender.GetExchangeUser() 'errs out
'MsgBox Obj.Sender.GetExchangeUser() 'errs out
strSender = obj.PrimarySmtpAddress
End If
End If
///Next
该代码有效,但对于来自电子邮件组的人 (h[电子邮件受保护]例如)或欺骗性电子邮件地址。
obj.SenderEmailAddress 结果为“/O=EXCHANGELABS/OU=EXCHANGE ADMINISTRATIVE GROUP (removedtextforstack)/CN=RECIPIENTS/CN=7E2removedtextforstackF6-USERNAME”
我相信这是预料之中的,但 Sender.GetExchangeUser() 给出了“需要对象”错误。我并不特别想要 3000 行代码来挖掘 AD 来尝试查找每封电子邮件的 AD 代码/用户。我们使用 Office 365,它由很多人管理,因此访问地址列表并不简单。
MailItem.Sender.GetExchnageUser().ProimarySmtpAddress
对于 EX 发件人来说应该可以正常工作,但是您的代码会检查SenderEmailAddress
财产而不是SenderEmailType
。将其更改为
If obj.SenderEmailType = "EX" Then
您还可以检查 PR_SENT_REPRESENTING_SMTP_ADDRESS 属性(DASL 名称http://schemas.microsoft.com/mapi/proptag/0x5D02001F
, use MailItem.PropertyAccessor.GetProperty
)在使用之前MailItem.Sender
财产(更贵)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)