且构网

分享程序员开发的那些事...
且构网 - 分享程序员编程开发的那些事

python中使用poplib模块接收邮件

更新时间:2022-08-12 15:03:00

目的:用poplib模块接收邮件,并处理文本内容。


环境:windows 7 Python 3.5.3


情景:服务器一般预警都会有邮件通知,如果通知比较多且邮箱还会收到其他的邮件时,这时从中整理出预警信息并统计的话,这个也算是一个比较重复繁琐的事,可以用脚本自动收集信息,并整理相关信息到表格内,方便查看,这里只记录接收邮件,写入表格见另一篇文章(私链)。


使用邮件模块接收邮件需要导入poplib,这个模块是内置的。

 import poplib  

# 服务器及用户信息

email = '邮箱地址'

username = '登录用户名'

password = '登录密码'

pop3_server = 'pop接收服务器地址' 

# 根据是否加密连接到服务器

server = poplib.POP3_SSL(pop3_server) 或server = poplib.POP3(pop3_server)

# 打印调试信息 

# #### debug sentence #####

server.set_debuglevel(1)

# 打印欢迎信息  

# ##### debug sentence #####

print(server.getwelcome())

# 身份认证

server.user(username)

server.pass_(password)

# 返回一个元组格式,邮件总数量和总大小

mail_total, total_size = server.stat()

print('Messages: %s. Size: %s' % (mail_total, total_size))

# 最旧的邮件标号是0,邮件数量也是最新的那封邮件的标号 返回的邮件是字节,需要编译成字符串,中文版的windows服务器一般是gb2312编码。

# 编译字符串def decode_str(_str):

    try:

        change_str = _str.decode('gb2312')

    except UnicodeDecodeError:

        change_str = _str.decode('utf-8')

# 获取邮件对应内容i 表示邮件标号,获取的邮件是一个元组,内容分别是(状态(+OK),邮件内容(列表),邮件大小(字节数))。

mail = server.retr(i)[1]邮件内有一行内容是邮件的ID,是唯一的,可以用来识别邮件。 

# 退出服务

server.quit()















本文转自RickyHuL51CTO博客,原文链接:http://blog.51cto.com/rickyh/1953142 ,如需转载请自行联系原作者