我正在尝试使用python中的win32包从Outlook 2013中提取发件人的电子邮件地址。我的收件箱中有两种电子邮件地址类型,即exchange和smtp。如果我尝试打印Exchange类型的发件人的电子邮件地址,则会收到以下消息:
/O=EXCHANGELABS/OU=EXCHANGE ADMINISTRATIVE GROUP(FYDIBOHF23SPDLT)/CN=RECIPIENTS/CN=6F467C825619482293F429C0BDE6F1DB-
我已经看过link了,但是找不到可以提取smtp地址的函数。
下面是我的代码:
from win32com.client import Dispatch
outlook = Dispatch("Outlook.Application").GetNamespace("MAPI")
inbox = outlook.GetDefaultFolder("6")
all_inbox = inbox.Items
folders = inbox.Folders
for msg in all_inbox:
print msg.SenderEmailAddress
当前,所有电子邮件地址都是这样的:
/O=EXCHANGELABS/OU=EXCHANGE ADMINISTRATIVE GROUP(FYDIBOHF23SPDLT)/CN=RECIPIENTS/CN=6F467C825619482293F429C0BDE6F1DB-
我在VB.net link中找到了解决方案,但是不知道如何在Python中重写相同的内容。
最佳答案
首先,如果文件夹中包含MailItem,ReportItem等非MeetingItem的项目,则代码将失败。您需要检查Class属性。
其次,您需要检查发件人电子邮件地址类型,并将SenderEmailAddress仅用于“SMTP”地址类型。在VB中:
for each msg in all_inbox
if msg.Class = 43 Then
if msg.SenderEmailType = "EX" Then
print msg.Sender.GetExchangeUser().PrimarySmtpAddress
Else
print msg.SenderEmailAddress
End If
End If
next
关于python - 使用Win32在Python中从Outlook Exchange提取发件人的电子邮件地址,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31619012/