使用Python中的Outlook全局地址列表验证电子邮件地址

时间:2017-04-14 23:12:18

标签: python outlook

我正在尝试根据Outlook全局地址列表验证内部电子邮件地址是否有效,并发现此方法here我使用的代码如下:

outlook = win32com.client.gencache.EnsureDispatch('Outlook.Application')
recipient = outlook.Session.CreateRecipient(emailToValidate)
recipient.Resolve()
print recipient.Resolved

然而,我遇到的问题是“recipient.Resolved”的值似乎一直返回True,即使我使用无效地址进行测试。例如,如果我在Outlook中键入随机内部电子邮件地址并按“Ctrl + K”解决它,我将收到错误“我们将无法传递此消息,因为电子邮件地址不再有效”但使用上面的代码,地址是可解析的。有谁知道如何用Outlook获得完全相同的结果?

而且我也在考虑与内部邮件服务器进行通信以验证电子邮件地址,但实际上并不想将我的明文凭据放在脚本中,是否有人对此提出建议?谢谢,任何帮助表示赞赏。

1 个答案:

答案 0 :(得分:0)

如果您的字符串看起来像SMTP地址,Outlook会将其解析为一次性SMTP地址。提示“我们将无法发送此消息,因为电子邮件地址不再有效”来自EWS API(MailTips命令)。

您可以检查GAL条目的返回的Recipient.AddressEntry.Type ==“EX”。如果您传递GAL中不存在的任何其他SMTP地址,则地址类型将为“SMTP”。