python 读取邮件
#邮件数量太多,运行缓慢,因此只读取最近的邮件
#!/usr/bin/python
# -*- coding: UTF-8 -*-
# 文件名:read_email.py
from email.parser import Parser
import poplib
from bs4 import BeautifulSoup
from email.header import decode_header
# 邮件的Subject或者Email中包含的名字都是经过编码后的str,要正常显示,就必须decode
def decode_str(s):
value, charset = decode_header(s)[0]
# decode_header()返回一个list,因为像Cc、Bcc这样的字段可能包含多个邮件地址,所以解析出来的会有多个元素。上面的代码我们偷了个懒,只取了第一个元素。
if charset:
value = value.decode(charset)
return value
def print_info(msg,indent=0):
if indent ==0:
for header in ["From","To","Subject","name"]:
value = msg.get(header,"")
if value:
if header == "Subject":
value = decode_str(value)
if value == "邮件主题名" :#取18封邮件中需要的邮件
for par in msg.walk():
if not par.is_multipart(): # 这里要判断是否是multipart,是的话,里面的数据是无用的,至于为什么可以了解mime相关知识。
content_type = par.get_content_type()
if content_type == 'text/plain' or content_type == 'text/html':
content = par.get_payload(decode=True)
return htmlparse(content)
def htmlparse(content):
soup = BeautifulSoup(content, "html.parser")
list = [];
for tr in soup.find('table').children:
list.append(tr)
return (len(list))
def getMail(host,user,passwd,port=110):
p = poplib.POP3(host,port)
try:
p.user(user)
p.pass_(passwd)
except (poplib.error_proto,e):
print ("Login failed:",e)
sys.exit(1)
# 获取服务器上信件信息,返回是一个列表,第一项是一共有多上封邮件,第二项是共有多少字节
status = p.stat()
resp, mails, octets = p.list()
#可以查看返回的列表类似[b'1 82923', b'2 2184', ...]
#print(mails)
#print(p.list())
for i in range(0,18): #取最近的18封邮件
# 获取最新一封邮件, 注意索引号从1开始:
index = len(mails)-i
resp, lines, octets = p.retr(index)
#print(lines)
# lines存储了邮件的原始文本的每一行,
# 可以获得整个邮件的原始文本:
msg_content = b'\r\n'.join(lines).decode('utf-8')
# 稍后解析出邮件:
msg = Parser().parsestr(msg_content)
param = print_info(msg)
if not param is None:
return(param)
p.quit()
if __name__ == '__main__':
host = "pop3.------.com" # "pop.mail_serv.com"
username = "13231@163.com"
password = "----------"
getMail(host,user,passwd)
python 读取邮件相关推荐
- python读取邮件发送日期和时间_Python读取指定日期邮件的实例
背景:9月份有部分数据缺失,这部分数据在邮箱里,需要重新拉取,但是每天几百封邮件,总共有6.7万封邮件,使用stat()和retr(which)结合遍历很 耗时 基于如上背景,初始大致思路为: 使用二 ...
- python 读取邮件内容_python获取邮件内容(邮件内容为html)
用python获取邮件内容比较简单,直接用现成的imap和pop3包即可,但是有时候邮件的内容不是plainText而是html甚至是一个url链接,原本的操作流程是点击url获取内容(比如csv等等 ...
- python 读取邮件内容_Python 如何提取邮件内容
欢迎关注[无量测试之道]公众号,回复[领取资源], Python编程学习资源干货. Python+Appium框架APP的UI自动化. Python+Selenium框架Web的UI自动化. Pyth ...
- python 读取邮件内容_利用Python imaplib和email模块 读取邮件文本内容及附件内容...
python使用imap接收邮件的过程探索 https://www.cnblogs.com/yhlx/archive/2013/03/22/2975817.html #! encoding:utf8 ...
- python读取邮件发送日期和时间_Python获取邮件的日期时间Gmai
我试图用python为特定关键字从Gmail下载附件,代码如下:def read_email_from_gmail(): mail = imaplib.IMAP4_SSL(imap_url) mail ...
- python读取邮件标题_Python连载57- 邮件头和主题、解析邮件
一.添加邮件头,抄送等信息 1.mail["From"]表示发送者信息,包括姓名和邮件 2.mail["To"]表示接收者信息,包括姓名和邮件地址 3.mail ...
- python提取邮件附件_详解python实现读取邮件数据并下载附件的实例
详解python实现读取邮件数据并下载附件的实例 实现结果图: 实现代码: #!/usr/bin/python2.7 # _*_ coding: utf-8 _*_ """ ...
- python中文名的发件人邮件读取解析_如何使用python收取读取邮件?
之前给大家介绍使用python去发送邮件了,那有小伙伴提出疑问了,既然能发送,能否读取呢?如果可以用python实现,那将是个非常有趣的事情,于是小编也去查询了下,下面就给大家演示下,都来看看吧~以下 ...
- python exchangelib 删除邮件_Python exchangelib在子文件夹中读取邮件 - python
我想从Outlook邮箱的子文件夹中读取邮件. Inbox ├──myfolder 我可以使用account.inbox.all()阅读收件箱,但我想阅读myfolder中的邮件 我尝试了此页面fol ...
最新文章
- CentOS 6.4下PXE+Kickstart无人值守安装操作系统
- java中对集合排序,Java如何对集合中的项目排序?
- CTF-web文件上传漏洞
- 案例 员工坐小车回家 c# 1614190875
- 【kafka】Flink 消费 kafka Received unknown topic topic/partition may not exist Describe access to it
- 直接拿来用,10个PHP代码片段
- 路由器的四根指针怎么放?
- c#水晶报表的进一步功能和使用
- 自定义beans.xml文件实现Spring框架
- CCF NOI1038 玩扑克
- labelme批量转换json
- java连接oracle数据库jdbc
- c语言图书管理系统出现的问题,C语言图书管理系统中的问题
- 布谷鸟算法(C++实现)
- (7) PyQt 设计并实现【工厂扫码装箱系统】- Python代码实现BarTender自动化打印条码标签
- ubuntu17.04 UHD 驱动出错
- Lingo教育版免费申请流程
- 20135202闫佳歆-期末总结
- 如何把桌面路径设置到D盘
- 0基础学HTML,从快捷方式(IntelliJ IDEA)入手,一步步就能看懂了!