“Python案例:自动化存储邮件”的版本间的差异
来自CloudWiki
第5行: | 第5行: | ||
pip install imbox | pip install imbox | ||
− | + | ===存储密码=== | |
要解决这个需求,首先我们利用 keyring 库,通过系统密钥环将开启 IMAP/SMTP服务后获得的密码(授权码)预先在本地存储好。首先打开命令行输入python后输入 | 要解决这个需求,首先我们利用 keyring 库,通过系统密钥环将开启 IMAP/SMTP服务后获得的密码(授权码)预先在本地存储好。首先打开命令行输入python后输入 | ||
第21行: | 第21行: | ||
[[文件:python21042401.png|500px]] | [[文件:python21042401.png|500px]] | ||
+ | |||
+ | ===读取全部邮件=== | ||
+ | 用 imbox 读取邮件的代码如下: | ||
+ | |||
+ | <nowiki> | ||
+ | import keyring | ||
+ | password = keyring.get_password("qqmail","maxin5452@qq.com") | ||
+ | from imbox import Imbox | ||
+ | |||
+ | with Imbox("imap.qq.com","maxin5452@qq.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) # 附件</nowiki> | ||
+ | |||
+ | 关于上面的代码有几个地方需要注意一下: | ||
+ | |||
+ | *Imbox('imap.qq.com', 'xxx@qq.com', password, ssl=True) 这行代码中需要填写服务器、用户名邮箱、密码、SSL加密 | ||
+ | *循环体中 uid 参数是每封邮件的编号,邮件编号十分重要,可以用于邮件的标记和删除 | ||
+ | *message.sent_from 返回一个包裹字典的列表,这个字典有两个键:name 和 email,name 即用户名(或昵称),email 是发件人的邮箱 | ||
+ | *message.date 获取的字符串内容如 'Tue, 3 Nov 2020 08:08:16 +0800 (GMT+08:00)' ,一个 GMT 格式的时间,我们需要将它转化为正常的日期(年月日)+时间(时分秒),也就是将 GMT 时间格式的字符串转换成datetime 类型,可以通过下面的代码: | ||
+ | |||
+ | <nowiki> | ||
+ | import datetime | ||
+ | |||
+ | date = 'Tue, 3 Nov 2020 08:08:16 +0800 (GMT+08:00)' | ||
+ | GMT_FORMAT = '%a, %d %b %Y %H:%M:%S +0800 (GMT+08:00)' | ||
+ | |||
+ | print(datetime.datetime.strptime(date, GMT_FORMAT))</nowiki> |
2021年4月24日 (六) 07:31的版本
将邮箱里所有邮件的相关信息存到 Excel 中备份
安装模块
pip install keyring
pip install imbox
存储密码
要解决这个需求,首先我们利用 keyring 库,通过系统密钥环将开启 IMAP/SMTP服务后获得的密码(授权码)预先在本地存储好。首先打开命令行输入python后输入
>>> import keyring >>> keyring.set_password("qqmail","maxin5452@qq.com","你的密码(授权码)") >>>
这样 password 在本地存储好了,后面只需要 keyring.get_password 获取作为变量即可:
import keyring password = keyring.get_password("qqmail","maxin5452@qq.com")
邮箱设置->账户
读取全部邮件
用 imbox 读取邮件的代码如下:
import keyring password = keyring.get_password("qqmail","maxin5452@qq.com") from imbox import Imbox with Imbox("imap.qq.com","maxin5452@qq.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', password, ssl=True) 这行代码中需要填写服务器、用户名邮箱、密码、SSL加密
- 循环体中 uid 参数是每封邮件的编号,邮件编号十分重要,可以用于邮件的标记和删除
- message.sent_from 返回一个包裹字典的列表,这个字典有两个键:name 和 email,name 即用户名(或昵称),email 是发件人的邮箱
- message.date 获取的字符串内容如 'Tue, 3 Nov 2020 08:08:16 +0800 (GMT+08:00)' ,一个 GMT 格式的时间,我们需要将它转化为正常的日期(年月日)+时间(时分秒),也就是将 GMT 时间格式的字符串转换成datetime 类型,可以通过下面的代码:
import datetime date = 'Tue, 3 Nov 2020 08:08:16 +0800 (GMT+08:00)' GMT_FORMAT = '%a, %d %b %Y %H:%M:%S +0800 (GMT+08:00)' print(datetime.datetime.strptime(date, GMT_FORMAT))