from email.parser importParserfrom email.header importdecode_headerfrom email.utils importparseaddrimportpoplib#输入邮件地址, 口令和POP3服务器地址:#email = input('Email: ')#password = input('Password: ')#pop3_server = input('POP3 server: ')

#新浪邮箱测试通过, 密码使用登陆密码#email = "18937905850@sina.cn"#password = "password"#pop3_server = "pop.sina.cn"

#qq邮箱测试通过, 使用授权码, 使用ssl#email = "bestfuture25@qq.com"#password = "titeexrfwjutbhhg"#pop3_server = "pop.qq.com"

classEmail:def __init__(self,account,password,pop3_server):

self.account=account

self.password=password

self.pop3_server=pop3_serverdefguess_charset(self,msg):

charset=msg.get_charset()if charset isNone:

content_type= msg.get('Content-Type', '').lower()

pos= content_type.find('charset=')if pos >=0:

charset= content_type[pos + 8:].strip()returncharsetdefdecode_str(self,s):

value, charset=decode_header(s)[0]ifcharset:

value=value.decode(charset)returnvaluedef print_info(self,msg, indent=0):if indent ==0:for header in ['From', 'To', 'Subject']:

value= msg.get(header, '')ifvalue:if header == 'Subject':

value=self.decode_str(value)else:

hdr, addr=parseaddr(value)

name=self.decode_str(hdr)

value= u'%s ' %(name, addr)print('%s%s: %s' % (' ' *indent, header, value))if(msg.is_multipart()):

parts=msg.get_payload()for n, part inenumerate(parts):print('%spart %s' % (' ' *indent, n))print('%s--------------------' % (' ' *indent))

self.print_info(part, indent+ 1)else:

content_type=msg.get_content_type()if content_type == 'text/plain' or content_type == 'text/html':

content= msg.get_payload(decode=True)

charset=self.guess_charset(msg)ifcharset:

content=content.decode(charset)print('%sText: %s' % (' ' * indent, content + '...'))else:print('%sAttachment: %s' % (' ' *indent, content_type))defmain(self):#连接到POP3服务器:

#server = poplib.POP3(pop3_server)

#qq需要使用ssl

server =poplib.POP3_SSL(pop3_server)#可以打开或关闭调试信息:

server.set_debuglevel(1)#可选:打印POP3服务器的欢迎文字:

print(server.getwelcome().decode('utf-8'))#身份认证:

server.user(email)

server.pass_(password)#stat()返回邮件数量和占用空间:

print('Messages: %s. Size: %s' %server.stat())#list()返回所有邮件的编号:

resp, mails, octets =server.list()#可以查看返回的列表类似[b'1 82923', b'2 2184', ...]

print(mails)#获取最新一封邮件, 注意索引号从1开始:

index =len(mails)

resp, lines, octets=server.retr(index)#lines存储了邮件的原始文本的每一行,

#可以获得整个邮件的原始文本:

msg_content = b'\r\n'.join(lines).decode('utf-8')#稍后解析出邮件:

msg =Parser().parsestr(msg_content)

self.print_info(msg)#可以根据邮件索引号直接从服务器删除邮件:

#server.dele(index)

#关闭连接:

server.quit()if __name__ == '__main__':

email= "bestfuture25@qq.com"password= "titeexrfwjutbhhg"pop3_server= "pop.qq.com"Email(email,password,pop3_server).main()

python读取邮箱邮件_Python读取邮箱邮件相关推荐

  1. python 收发邮件_Python 【收发邮件】

    发邮件 smtplib模块主要负责发送邮件 email模块主要负责构造邮件.这两个都是Python内置模块 smtplib.SMTP.方法 #按住Ctrl键并点击SMTP ,会看到对SMTP的解释(v ...

  2. python 关闭 定时开启_Python爬虫邮箱定时自动发送

    背景介绍 小说网站-笔趣看:      URL:http://www.biqukan.com/ 笔趣看是一个盗版小说网站,这里有很多起点中文网的小说,该网站小说的更新速度稍滞后于起点中文网正版小说的更 ...

  3. python读取grib2数据_python读取grib grib2气象数据

    GRIB是WMO开发的一种用于交换和存储规则分布数据的二进制文件格式,主要用来表示数值天气预报的产品资料.现行的GRIB 码版本有GRIB1 和GRIB2 两种格式.由于小编只接触过GRIB1数据,所 ...

  4. python发送带表格的邮件_PYTHON自动发送报表邮件

    要实现上述的功能的话我们需要以下几步:1.做好报表模板 2.更新报表数据 3.发送报表邮件 下面我们就用一个例子来给大家演示一下: 1.报表模板 我们选用一份保险公司每天完成保单的数据进行模板制作,要 ...

  5. python读取写入文件_Python读取和写入文件

    1 从文件中读取数据 1.1 读取整个文件 创建名为test的txt文本文件,添加内容如下所示: 1234567890 2345678901 3456789012 实现代码: with open('t ...

  6. python 读取大文件_Python读取大文件

    1. 前言 前几天在做日志分析系统,需要处理几十G的文件,我尝试用原来的for line in open(filepath).readlines()处理,但停顿好久也没变化,可见占用不小的内存.在网上 ...

  7. 用python读取文档_python读取word文档

    word.Quit() 这种方式产生的text文档,不能用python用普通的r方式读取,为了让python可以用r方式读取,应当写成 doc.SaveAs('c:/test', 4) 注意:系统执行 ...

  8. python 收发邮件_python发送各类邮件的主要基本方法

    利用python实现基本的邮件发送. 感谢以下博客的整理,本人在学习的同时也做了一些整理 一.相关模块介绍 发送邮件主要用到了smtplib和email两个模块,这里首先就两个模块进行一下简单的介绍: ...

  9. python读视频文件_python读取和保存视频文件

    如何用python实现视频关键帧提取并保存为图片?也许你会觉得对小编多做一点事你会觉得你很爽,可是在小编看来这是不屑的 import cv2vc = cv2.VideoCapture('Test.av ...

  10. python 读取excel表格_Python读取Excel表格

    本文将教大家如何使用Python来读取Excel表,学会这个技能对提高工作效率会十分有帮助. 目录: 1.安装Python读excel模块--xlrd 2.准备表格内容 3.编写python代码并运行 ...

最新文章

  1. mysql正斜杠_MySQL中的正斜杠和反斜杠 | | 数据库系统概论(字符匹配)
  2. pandas删除dataframe列名称中包含特定字符串的数据列(dropping columns contains specifiec substring in dataframe)
  3. C# 中 StringBuilder和String的区别
  4. elk入门_ELK堆栈入门
  5. TCP/IP文档阅读笔记-TCP Receive Window
  6. Spring boot Rabbitmq 示例
  7. redis深度历险 pdf_程序员面试必备精选文档:Redis+Ng+Tomcat+并发编程+Spring系列
  8. 关于计算机中 二进制位(bit)、字节(Byte)、 千字节(KB)等之间的关系
  9. JAVA→JDBCJava DataBase Connectivity、存储过程Stored Procedure、事务Transaction、连接池DBCP C3P0、JDBC升级替代框架
  10. nginx+uwsgi+django
  11. 【CSDN软考VIP资料群】让软考通过更容易,软考资料大全支持你软考!
  12. 力软敏捷开发框架源码7.0.6旗舰版
  13. javascript特效
  14. lcd4linux 支持的相框,最新版AIDA64支持LCD4WIN相框太给力了(20140826更新啦)!
  15. 随机样本,方便样本与资源回应样本
  16. linux看温度命令,linux查看cpu温度命令
  17. (附源码)springboot卫生院儿童预防接种管理系统 毕业设计 011404
  18. Win10下双系统Ubuntu14.04+GTX1070+CUDAcuDNN+Tensorflow环境搭建
  19. C语言邻接矩阵的实现
  20. 防住CV中这颗“不定时炸弹”,有哪些捷径?丨独家公开课实录(4)

热门文章

  1. csuoj 1351: Tree Counting
  2. 用C#生成随机中文汉字验证码
  3. RTT时钟管理篇——RTT定时器超时判断理解
  4. java jlist删除选中的项_java jlist removeListSelectionListener 怎样删除已经建好的 ListSelectionListener...
  5. mysql触发器对同一张表做操作_mysql的触发器同数据库 多表的数据操作
  6. 记一次library cache lock/library cache pin导致的函数编译hang住分析及处理过程
  7. 老司机带你在MySQL领域“大吉大利,晚上吃鸡”
  8. Hadoop 面试,来看这篇就够了
  9. 微信月活9亿的高效运维之路
  10. 斗罗大陆真3D手游实力上线,带你感受魂兽猎杀的超燃时刻