使用 python 阅读 outlook 365 电子邮件并获取发件人电子邮件(exchange 或 SMTP)
Read outlook 365 email using python and get sender email (exchange or SMTP)
我有一个 python 脚本可以从 outlook 的收件箱文件夹中读取电子邮件,并检索发件人的电子邮件 ID。
outlook = win32com.client.Dispatch(
"Outlook.Application").GetNamespace("MAPI")
print("Reading Mails")
inbox = outlook.GetDefaultFolder(6)
messages = inbox.Items
for msg in messages:
print(msg.SenderEmailAddress)
prints '/o=ExchangeLabs/ou=Exchange 管理组 (FYDIBONPDLT)/cn=Recipients/cn=80cf94566sdfhve819ddaede72dc842-发件人姓名'
而不是脚本可以处理的电子邮件 ID。
打印的语句实际上是一个 Exchange 地址。当从公司内部收到电子邮件时返回。处理此问题的最佳方法是确定 SenderEmailType 是否为 Exchange。
if (msg.SenderEmailType = "EX"):
print(msg.Sender.GetExchangeUser().PrimarySmtpAddress)
else #email type SMTP
print(msg.SenderEmailAddress)
我有一个 python 脚本可以从 outlook 的收件箱文件夹中读取电子邮件,并检索发件人的电子邮件 ID。
outlook = win32com.client.Dispatch(
"Outlook.Application").GetNamespace("MAPI")
print("Reading Mails")
inbox = outlook.GetDefaultFolder(6)
messages = inbox.Items
for msg in messages:
print(msg.SenderEmailAddress)
prints '/o=ExchangeLabs/ou=Exchange 管理组 (FYDIBONPDLT)/cn=Recipients/cn=80cf94566sdfhve819ddaede72dc842-发件人姓名'
而不是脚本可以处理的电子邮件 ID。
打印的语句实际上是一个 Exchange 地址。当从公司内部收到电子邮件时返回。处理此问题的最佳方法是确定 SenderEmailType 是否为 Exchange。
if (msg.SenderEmailType = "EX"):
print(msg.Sender.GetExchangeUser().PrimarySmtpAddress)
else #email type SMTP
print(msg.SenderEmailAddress)