如何用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.SenderEmailAddress
和email.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
的问题。如果仍然遇到其他问题,请提供完整的错误信息,以便进一步调试。