python獲取outlook 中出現問題

如何用python 獲取outlook 中指定發件人和包含的主旨内容,獲取他們的附件保存到指定路徑中

import win32com.client
import os

# 创建Outlook应用程序对象
outlook = win32com.client.Dispatch("Outlook.Application").GetNamespace("MAPI")

# 获取收件箱文件夹
inbox = outlook.GetDefaultFolder(6)

# 获取未读邮件
unread_emails = inbox.Items.Restrict("[UnRead] = True")

# 遍历未读邮件
for email in unread_emails:
    # 检查发件人和正文内容
    if email.SenderEmailAddress == "PCQ_AUTOline@i.com" and "资料统计如附件" in email.Body:
        # 保存附件
        for attachment in email.Attachments:
            attachment.SaveAsFile(os.path.join(r"D:\匯總", attachment.FileName))

這個代碼回報AttributeError: .SenderEmailAddress

修改前 if email.SenderEmailAddress == "PCQ_AUTOline@i.com" and "资料统计如附件" in email.Body:
修改后if email.Sender.EmailAddress == "PCQ_AUTOline@i.com" and "资料统计如附件" in email.Body:
還是報錯AttributeError: .EmailAddress
還請協助

SenderEmailAddress
不是
Sender.EmailAddress

参考:

【以下回答由 ChatGPT 生成】

问题出现的原因是,email.SenderEmailAddressemail.Sender.EmailAddress这两个属性在Outlook库的不同版本中可能会有所不同。为了解决这个问题,可以采用一种更通用的方法来获取发件人的邮箱地址。具体的解决方案如下:

使用Outlook库的entry.GetExchangeUser().PrimarySmtpAddress属性来获取发件人的主SMTP地址。

import win32com.client
import os

# 创建Outlook应用程序对象
outlook = win32com.client.Dispatch("Outlook.Application").GetNamespace("MAPI")

# 获取收件箱文件夹
inbox = outlook.GetDefaultFolder(6)

# 获取未读邮件
unread_emails = inbox.Items.Restrict("[UnRead] = True")

# 遍历未读邮件
for email in unread_emails:
    # 获取发件人的主SMTP地址
    sender_email_address = email.Sender.GetExchangeUser().PrimarySmtpAddress

    # 检查发件人和正文内容
    if sender_email_address == "PCQ_AUTOline@i.com" and "资料统计如附件" in email.Body:
        # 保存附件
        for attachment in email.Attachments:
            attachment.SaveAsFile(os.path.join(r'D:\匯總', attachment.FileName))

这样修改后,应该可以正常获取发件人的邮箱地址,并且解决了AttributeError的问题。如果仍然遇到其他问题,请提供完整的错误信息,以便进一步调试。


如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^