2014-11-27 1 views
2

Я пытаюсь написать сценарий на Python, который вытащит контактную информацию из глобального списка адресов Outlook. Для каждой записи мне удалось получить имя контакта, а также псевдоним (с некоторым дополнительным синтаксическим разбором).Получение контактной информации из Outlook GAL с использованием Python и win32com

Мой код размещен ниже:

import win32com.client 

o = win32com.client.gencache.EnsureDispatch("Outlook.Application") 
ns = o.GetNamespace("MAPI") 

adrLi = ns.AddressLists.Item("Global Address List") 
contacts = adrLi.AddressEntries 
numEntries = adrLi.AddressEntries.Count 

nameAliasDict = {} 

for i in contacts: 
    name = i.Name 
    alias = i.Address.split("=")[-1] 
    nameAliasDict[alias] = name 

print "\nThe global address list contains",numEntries,"entries." 

Есть ли способ я могу получить полный набор информации, который показывает, когда я открываю GAL в внешнем виде (например, название, адрес электронной почты)?

Спасибо.

+0

Попробуйте добавить строку в конец 'print dir (ardLi [0]) ', чтобы увидеть, что у вас уже есть. –

ответ

1

Используйте AddressEntry.GetExchangeUser для извлечения объекта ExchangeUser. Если какое-либо свойство MAPI явно не открыто объектом ExchangeUser, вы можете получить его с помощью AddressEnttry.PropertyAccessor.GetProperty. Взгляните на записи адреса GAL с помощью OutlookSpy - нажмите IAddrBook | Open Root Comtainer или IMAPISession | QueryIdentity, чтобы увидеть объекты GAL и их свойства MAPI.

+0

Спасибо, это именно то, что я искал. Любопытно, что есть другие поля, когда вы открываете контактную информацию, такую ​​как «Ветка» и «Секция». Есть ли способ получить их? Это не похоже на список полей. – Cameron

+0

Вы посмотрели запись GAL в OutlookSpy? Как я уже упоминал ранее, вы можете получить доступ к любому свойству MAPI, используя AddressEnttry.PropertyAccessor.GetProperty. –

Смежные вопросы