目的:用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()



http://blog.51cto.com/rickyh/1953142