使用Python在GAL中更快地搜索电子邮件



我需要创建一个Python脚本,根据他们的电子邮件,抓取关于1500个Outlook联系人(20000个)的不同信息。到目前为止,我设法做到了:

def grab_user_details(email):
first_name, last_name, department, location = '', '', '', ''
outlook = win32com.client.Dispatch("Outlook.Application").GetNamespace("MAPI")
gal = outlook.Session.GetGlobalAddressList()
entries = gal.AddressEntries
for i in entries:
user = i.GetExchangeUser()
if user is not None:
if user.PrimarySmtpAddress == email:
first_name = email.split("@")[0].split(".")[0].title()
last_name = email.split("@")[0].split(".")[1].title()
department = user.Department
location = user.OfficeLocation
print(email, first_name, last_name, department, location)
break

最后,代码只是为特定的电子邮件遍历GAL。在找到它之后,它会中断,并继续搜索下一封电子邮件。这种方法对于以A开头的电子邮件来说很快,或者至少是B……但是当你有一个有20000封邮件的女孩时,你不能只等两天就把整个字母表写完。

有更快的方法吗?

谢谢!

使用Namespace类的createrrecipient方法获取一个基于email地址的receiver类的实例

Sub TestRecipient()
Dim myNamespace As Outlook.NameSpace 
Dim myRecipient As Outlook.Recipient 

Set myNamespace = Application.GetNamespace("MAPI") 
Set myRecipient = myNamespace.CreateRecipient("address@domain.com") 

myRecipient.Resolve 

If myRecipient.Resolved Then 

' do some stuff here

End If 

End Sub 

收件人。AddressEntry属性返回与解析的收件人对应的AddressEntry对象。访问AddressEntry属性强制解析未解析的收件人名称。如果无法解析该名称,则返回错误。如果收件人被解析,则Resolved属性为True

那么你可以使用AddressEntry。GetExchangeUser方法,如果AddressEntry属于ExchangeAddressList对象(如全局地址列表(GAL))并且对应于Exchange用户,则返回一个代表AddressEntry的ExchangeUser对象。

根据@Eugene Astafiev的回答(谢谢!),我想出了以下代码:

def grab_user_details(email):
name, department, location = '', '', ''
outlook = win32com.client.Dispatch("Outlook.Application").GetNamespace("MAPI")
user = outlook.Session.CreateRecipient(email)
user.Resolve()
print(user.Resolved)
try:
name = user.AddressEntry.GetExchangeUser().Name
department = user.AddressEntry.GetExchangeUser().Department
location = user.AddressEntry.GetExchangeUser().OfficeLocation
print(email, name, department, location)
except:
print("user NA")

这个方法比在GAL中搜索要快得多。

还有一件事我需要修复:不幸的是,一些用户有2个电子邮件地址',和。createrrecipient(电子邮件)返回什么,虽然outlook可以找到它。我需要再深入研究一下。

相关内容

  • 没有找到相关文章

最新更新