Python pywin32 outlook邮箱
安装依赖
sh
pip install pywin32
使用实例
python
outlook = client.Dispatch("Outlook.Application").GetNamespace("MAPI")
inbox = outlook.GetDefaultFolder(6) # 6表示收件箱
# 创建时间范围过滤器
end_time = dt.now()
start_time = end_time - timedelta(days=3)
# Restrict()过滤时间格式 %Y-%m-%d %H:%M %p必须带有%p,否则可能报错,或者没数据
start_str = start_time.strftime("%Y-%m-%d %H:%M %p")
end_str = end_time.strftime("%Y-%m-%d %H:%M %p")
filter_str = f"[ReceivedTime] > '{start_str}' AND [ReceivedTime] < '{end_str}'"
# 通过时间过滤邮件
emails= inbox.Items.Restrict(filter_str)
for email in emails:
# 邮件标题
print(email.Subject)
# 发送人
print(email.SenderName)
# 邮件内容(HTML格式)
print(email.HTMLBody)
# 邮件接收时间
print(email.ReceivedTime)
# 文件对象,包括附件,邮件中截图,图片等文件
print(email.Attachments)
# 邮件收件人(包括抄送人)信息对象
for i in message.Recipients:
print(i.Name) # 收件人名称
print(i.Resolved) #
print(i.Address) # 收件人邮箱地址
print(i.Type) # 1:收件人,2:抄送人
# 附件对象
for attachment in email.Attachments:
# attachment.FileName 文件名
filename = str(attachment.FileName)
suffix = os.path.splitext(filename)[1].strip(".")
if filename.startswith('image') and suffix in ["png", "jpg"]: continue
print(filename)
dir_path = r'D:\test'
filepath = os.path.join(dir_path, attachment.FileName)
# attachment.SaveAsFile()保存文件到指定路径
attachment.SaveAsFile(filepath)