来源:早起Python
作者:自动化工作组
大家好,我是早起。
在之前的文章中我们已经了解如何对自己的邮箱做一些代码操作前的基础配置,以及通过 Python 代码收发、读取邮件。本文将简单复习之前的部分重点内容,并通过 3 个小案例进一步分享一个实用技巧:将邮件写入 Excel 中。
之前的文章中我们也提到,基础配置需要打开 POP3/SMTP/IMAP,针对不同邮箱有不同的操作,并以网易 163 邮箱和 QQ 邮箱 举例说明,其他邮箱设置基本类似。详情可以查看我之前的Python办公自动化系列文章。
如果你来不及看,至少需要了解下面几个概念
为了体现通用性,这次我们再换一个邮箱讲解,下面的案例均以 88 完美邮箱为例示范,本文主要将分为下面两个部分介绍
imbox 收取邮件
openpyxl 写入 Excel 文件
1.案例一
“将邮箱里所有邮件的相关信息存到 Excel 中备份”
要解决这个需求,首先我们利用 keyring 库,通过系统密钥环将开启 IMAP/SMTP服务后获得的密码(授权码)预先在本地存储好。首先打开命令行输入python后输入:
import keyringkeyring.set_password("88mail", "test@88.com", "password")
这样 password 在本地存储好了,后面只需要 keyring.get_password 获取作为变量即可:
import keyringpassword = keyring.get_password('88mail', 'test@88.com')
打开 88 邮箱的网页版,进一步确认是否配置是否完成,以及服务器邮箱:
用 imbox 读取邮件的代码如下:
import keyring from imbox import Imboxpassword = keyring.get_password('88mail', 'test@88.com')with Imbox('imap.88.com', 'test@88.com', password, ssl=True) as imbox: # 获取全部邮件 all_inbox_messages = imbox.messages() # 获取全部邮件 for uid, message in all_inbox_messages: print(uid) # 邮件编号 print(message.sent_from) # 发件人 print(message.subject) # 邮件主题 print(message.date) # 日期 print(message.body['plain']) # 邮件文本格式正文 print(message.attachments) # 附件
关于上面的代码有几个地方需要注意一下:
Imbox('imap.qq.com', 'xxx@qq.com', passw