python批量处理邮件,python批量处理邮件:poplib和email快速上手教程

标签:创建文件   content   list()   attach   并且   内容   tps   比特   wechat

目录

引言

快速上手代码

参考链接

引言

poplib是一个python第三方库,基于它我们可以连接POP3服务器。

email是一个python内置的模块,基于它我们可以管理邮箱中的邮件。

Some Story

我现在需要下载很多邮件的附件。我之前有一份相同功能的代码(点击这里),发布出来之后博客访问量也挺高。然而,当时由于时间原因我对那份代码只是一知半解,运行起来后就没具体研究。所以趁这个机会我又写了一份代码,原因有很多:一是于己我要把代码细节给搞懂,二是针对这次的需求进行修改,三是水一篇博客(bushi,这份代码十分简要并且注释十分详细)。

快速上手代码

import poplib

from email.parser import Parser

"""

功能:下载某一个邮件的所有附件

"""

def download_attachment(email):

subject = email.get(‘Subject‘)

for part in email.walk(): # 深度优先遍历整个email的内容

attachment_name = part.get_filename() # 获取附件名称

if attachment_name is not None:

# print(attachment_name)

attachment_content = part.get_payload(decode=True) # 下载附件

attachment_file = open(‘./‘ + attachment_name, ‘wb‘) # 在指定目录下创建文件,注意二进制文件需要用wb模式打开

attachment_file.write(attachment_content) # 将附件保存到本地

attachment_file.close()

print(‘Done‘, subject)

def main():

"""连接到POP3服务器"""

server = poplib.POP3(host=‘pop.163.com‘) # 创建一个POP3对象,参数host是指定服务器

"""身份验证"""

server.user(‘xxxx@163.com‘) # 参数是你的邮箱地址

server.pass_(‘xxxxx‘) # 参数是你的邮箱密码

"""获取邮箱状态"""

email_count, email_size = server.stat()

# print(‘邮件数量:%s, 邮件总大小:%s‘ % (email_count, email_size))

"""获取邮件列表"""

# response, email_sizes, octets = server.list() # 3个结果分别是响应结果(1个包含是否请求成功、邮件数量、邮件总大小的字符串),邮件信息列表(一个字符串列表,每个元素内容包含邮件index及该邮件的大小),字节包含比特数量(octet专指8bit的字节)

# print(response)

# print(email_sizes)

# print(octets)

"""遍历邮件"""

email_parser = Parser()

for i in range(email_count):

"""获取邮件内容:POP3.retr(which)检索index为which的整个邮件,并将其设为已读"""

response, lines, octets = server.retr(i+1) # 3个结果分别是响应结果(1个包含是否请求成功和该邮件大小的字符串),邮件内容(一个字符串列表,每个元素是邮件内容的一行),邮件大小(即有多少个octets,octet特指8bit的字节)

# print(response)

# print(lines)

# print(octets)

"""将邮件内容拼接成1个字符串,并使用utf-8解码"""

email_raw_content = b‘\r\n‘.join(lines).decode(‘utf-8‘)

# print(email_raw_content)

"""将字符串格式的邮件内容转换为email模块支持的格式()"""

email = email_parser.parsestr(email_raw_content)

# for item in email.items():

# print(item)

"""下载邮件中的附件"""

download_attachment(email)

if __name__ == "__main__":

main()

参考链接

https://docs.python.org/zh-cn/3/library/poplib.html

https://docs.python.org/zh-cn/3/library/email.html

自定义修改:如果需要对上面的代码进行修改,比如需要获取邮件正文而非邮件附件,则可以进一步去看文档(特别是email.message)。

我注释的一些代码也很重要,建议读者自己写几封测试邮件,把代码看懂,然后再去看文档,就可以啦!

Github(github.com):@chouxianyu

Github Pages(github.io):@臭咸鱼

知乎(zhihu.com):@臭咸鱼

博客园(cnblogs.com):@臭咸鱼

B站(bilibili.com):@绝版臭咸鱼

微信公众号:@臭咸鱼的快乐生活

转载请注明出处,欢迎讨论和交流!

python批量处理邮件:poplib和email快速上手教程

标签:创建文件   content   list()   attach   并且   内容   tps   比特   wechat

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值