imbox库读取邮件
import os
from imbox import Imbox
# 存储附件
def save_attachments(attachments, save_dir):
fujian_path_list = []
for attachment in attachments:
save_path = os.path.join(save_dir, attachment['filename'])
with open(save_path, 'wb') as f:
f.write(attachment['content'].getvalue())
fujian_path_list.append(save_path)
return fujian_path_list
# Imbox(服务器,邮箱用户名,密码,SSL加密)
with Imbox('imap.exmail.qq.com', 'xxx@qq.com', password, ssl=True) as imbox:
all_inbox_messages = imbox.messages() # 获取全部邮件
# email_list = email_server.messages(unread=True) # 未读邮件
# read_inbox_messages = self.email_server.messages(unread=False) # 已读邮件
# flagged_inbox_messages = self.email_server.messages(flagged=True) # 红旗标记邮件
for uid, message in all_inbox_messages:
# imbox.mark_seen(uid) # 标记为已读
# imbox.delete(uid) # 删除
print(message.subject) # 邮件主题
print(message.sent_from) # 发件人
print(message.sent_to) # 收件人
print(message.date) # 发送日期
print(message.body['plain']) # 邮件文本格式正文
print(message.body['html']) # html格式正文
print(message.attachments) # 附件
- 读取不同类别的邮件
all_inbox_messages = imbox.messages() # 获取全部邮件
email_list = email_server.messages(unread=True) # 未读邮件
read_inbox_messages = self.email_server.messages(unread=False) # 已读邮件
flagged_inbox_messages = self.email_server.messages(flagged=True) # 红旗标记邮件
- 通过邮件的收件时间获取邮件
# date__lt:读取某天前的邮件
# date__gt:读取某天后的邮件
# date__on:读取某天的邮件
inbox_message_before = imbox.messages(date__lt=datetime.date(2021, 1, 18))
inbox_message_after = imbox.messages(date__gt=datetime.date(2021, 1, 18))
inbox_message_on_date = imbox.messages(date__on=datetime.date(2021, 1, 18))
- 删除或标记为已读
imbox.mark_seen(uid) # 标记为已读
imbox.delete(uid) # 删除
参考
https://blog.csdn.net/weixin_41846769/article/details/113864647