我正在尝试使用Python和win32获取MailItem的发件人电子邮件地址,但是无论何时找到Exchange地址,我都无法获取SMTP地址。我尝试了网络上所有可用的东西,但是返回的是空字符串。这是我正在使用的代码片段:
if msg.Class == 43:
if msg.SenderEmailType == 'EX':
print(msg.Sender.GetExchangeUser().PrimarySmtpAddress)
else:
print(msg.SenderEmailAddress)
你可以尝试使用读取PidTagSenderSmtpAddress
MAPI属性(DASL名称http://schemas.microsoft.com/mapi/proptag/0x5D01001F
)MailItem.PropertyAccessor.GetProperty
-使用OutlookSpy(单击IMessage按钮)或MFCMAPI查看消息。
使用OutlookSpy,我可以找到所需的属性
PidTagSenderSmtpAddress_W
(是的,非常接近您提到的属性)。但是,对象和属性不兼容。因此,我需要添加一些东西,以便该属性兼容。请在最后一步帮助我。GetProperty()返回泛型
object
',将其强制转换为string
。我想
MailItem
我应该指定项目本身,而不是我自己指定的项目msg
?是的。MailItem是COM对象类的名称-docs.microsoft.com/zh-cn/office/vba/api/outlook.mailitem
目前我正在做
msg.PropertyAccessor.GetProperty.PidTagSenderSmtpAddress_W
,并且显示的错误是AttributeError: 'function' object has no attribute 'PidTagSenderSmtpAddress_W'
。并查看错误,我不太相信将object
to转换string
会有所帮助。