使用 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)