python3自动读取QQ邮箱的附件 脚本
环境
python3 实现,QQ 邮箱,开启SMTP /POP 服务
注意
账号密码:密码 不是账号密码,而是认证码。需要开启服务获取。
参考
- https://blog.csdn.net/weixin_41846769/article/details/113864647python3
读邮件 - https://blog.csdn.net/weixin_42558201/article/details/122338936
python3 读邮件附件脚本 - https://coffeemilk.blog.csdn.net/article/details/123358350?spm=1001.2101.3001.6650.5&utm_medium=distribute.pc_relevant.none-task-blog-2%7Edefault%7EBlogCommendFromBaidu%7ERate-5-123358350-blog-124468065.pc_relevant_multi_platform_whitelistv3&depth_1-utm_source=distribute.pc_relevant.none-task-blog-2%7Edefault%7EBlogCommendFromBaidu%7ERate-5-123358350-blog-124468065.pc_relevant_multi_platform_whitelistv3&utm_relevant_index=6
获取认证码
获取方式:
import os
from imbox import Imbox
import keyring
#这句话不用的话 后面main函数就不需要keyring.get的函数,直接password=‘你的认证码’
keyring.set_password("qqemail","name",password)
# 存储附件
def save_attachments(attachments, save_dir='attachmemt'):
#设置存放路径
if not os.path.exists(save_dir):
os.mkdir(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
def doMain(id,password):
# Imbox(服务器,邮箱用户名,密码,SSL加密) password 是认证码,非密码:由QQ邮箱服务生成
with Imbox('imap.qq.com', id, 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) # 红旗标记邮件
i = 0
for uid, message in all_inbox_messages:
i +=1
if i > 150:
print('test finish')
break
# 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格式正文
if str(message.subject).find("周报") == 1:
continue
print(message.attachments) # 附件
save_attachments(message.attachments)
#if str(message.subject).find('奖学') == 1:
# print(message.attachments) # 附件
if __name__ == '__main__':
password = keyring.get_password("qqemail","name")
id='XXX@qq.com'
doMain(id,password)
在这里插入代码片