我已阅读这篇文章如何在 Outlook (2010) 全局地址列表中搜索名称?并找到了从 Outlook GAL 获取名称的有效解决方案。
我有3个问题:
search_string
如果是电子邮件地址,我可以得到联系方式。当它是一个名字时,搜索不起作用。它将返回False
已解决,但True
可发送。然后我在使用ae
对象时出错。我究竟做错了什么?我对代码的理解不足以修改它以搜索多个名称。我只是创建了一个 for 循环,但也许有更有效的方法?例如,我可以
outlook.Session
在不同的搜索之间重用对象吗?线是
recipient.Resolve()
必要的吗?
提前致谢!
我的尝试如下。
from __future__ import print_function
import win32com.client
search_strings = ['Doe John', 'Doe Jane']
outlook = win32com.client.gencache.EnsureDispatch('Outlook.Application')
for search_string in search_strings:
recipient = outlook.Session.CreateRecipient(search_string)
recipient.Resolve()
print('Resolved OK: ', recipient.Resolved)
print('Is it a sendable? (address): ', recipient.Sendable)
print('Name: ', recipient.Name)
ae = recipient.AddressEntry
email_address = None
if 'EX' == ae.Type:
eu = ae.GetExchangeUser()
email_address = eu.PrimarySmtpAddress
if 'SMTP' == ae.Type:
email_address = ae.Address
print('Email address: ', email_address)