我有一份名单,其中一些完整,一些被截断。我想在 Outlook 地址列表中搜索这些名称的匹配项。
我最接近的是这个Python代码来自 ActiveState 代码,但它不搜索全局地址,只搜索我的(本地?)列表,其中有3个地址,这显然是不对的。应该有数千条记录。
欢迎任何提示。我用谷歌搜索并阅读了几十页,但没有任何结论。我不想直接连接到 LDAP,我认为这违反了我的组织中的政策,而且我不确定这是否可能。如果可能的话,希望通过 Outlook API 来完成此操作。
DEBUG=1
class MSOutlook:
def __init__(self):
self.outlookFound = 0
try:
self.oOutlookApp = \
win32com.client.gencache.EnsureDispatch("Outlook.Application")
self.outlookFound = 1
except:
print("MSOutlook: unable to load Outlook")
self.records = []
def loadContacts(self, keys=None):
if not self.outlookFound:
return
# this should use more try/except blocks or nested blocks
onMAPI = self.oOutlookApp.GetNamespace("MAPI")
ofContacts = \
onMAPI.GetDefaultFolder(win32com.client.constants.olFolderContacts)
if DEBUG:
print("number of contacts:", len(ofContacts.Items))
for oc in range(len(ofContacts.Items)):
contact = ofContacts.Items.Item(oc + 1)
if contact.Class == win32com.client.constants.olContact:
if keys is None:
# if we were't give a set of keys to use
# then build up a list of keys that we will be
# able to process
# I didn't include fields of type time, though
# those could probably be interpreted
keys = []
for key in contact._prop_map_get_:
if isinstance(getattr(contact, key), (int, str, unicode)):
keys.append(key)
if DEBUG:
keys.sort()
print("Fields\n======================================")
for key in keys:
print(key)
record = {}
for key in keys:
record[key] = getattr(contact, key)
if DEBUG:
print(oc, record['FullName'])
self.records.append(record)
随机链接:
MSDN- 如何使用 Visual Basic 以编程方式创建全局地址列表
英菲尼泰克- 如何以编程方式获取全局地址列表
返回布尔值 True- 从 Outlook/Exchange 下载全局地址列表
Grokbase- [python-win32] 使用扩展的mapi获取全局地址簿
-
堆栈溢出- 搜索 Outlook 全球地址
List 的又一次失败尝试
ActiveStater代码- 回复:电子邮件地址查找
-
堆栈溢出- 通过Python检索outlook联系人
这是我得到上面链接的地方
-
堆栈溢出- 使用 Python 获取 Outlook 联系人
根本不运行
-
适用于 Windows 的 Python- 自动化 Microsoft Outlook
只是默认地址簿。另外我想搜索,而不是列出全部。
如果有人能提出一个解决方案,我不介意它是 C++、VB、Perl、Python 等。
上面的代码处理默认联系人文件夹中的联系人。如果您想检查给定的姓名是否在 Outlook 中(无论是作为联系人还是在 GAL 中),只需致电Application.Session.CreateRecipient
其次是Recipient.Resolve
。如果呼叫返回true
,您可以阅读Recipient.Address
和各种其他属性。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)