#邮件数量太多,运行缓慢,因此只读取最近的邮件

#!/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 读取邮件相关推荐

  1. python读取邮件发送日期和时间_Python读取指定日期邮件的实例

    背景:9月份有部分数据缺失,这部分数据在邮箱里,需要重新拉取,但是每天几百封邮件,总共有6.7万封邮件,使用stat()和retr(which)结合遍历很 耗时 基于如上背景,初始大致思路为: 使用二 ...

  2. python 读取邮件内容_python获取邮件内容(邮件内容为html)

    用python获取邮件内容比较简单,直接用现成的imap和pop3包即可,但是有时候邮件的内容不是plainText而是html甚至是一个url链接,原本的操作流程是点击url获取内容(比如csv等等 ...

  3. python 读取邮件内容_Python 如何提取邮件内容

    欢迎关注[无量测试之道]公众号,回复[领取资源], Python编程学习资源干货. Python+Appium框架APP的UI自动化. Python+Selenium框架Web的UI自动化. Pyth ...

  4. python 读取邮件内容_利用Python imaplib和email模块 读取邮件文本内容及附件内容...

    python使用imap接收邮件的过程探索 https://www.cnblogs.com/yhlx/archive/2013/03/22/2975817.html #! encoding:utf8 ...

  5. python读取邮件发送日期和时间_Python获取邮件的日期时间Gmai

    我试图用python为特定关键字从Gmail下载附件,代码如下:def read_email_from_gmail(): mail = imaplib.IMAP4_SSL(imap_url) mail ...

  6. python读取邮件标题_Python连载57- 邮件头和主题、解析邮件

    一.添加邮件头,抄送等信息 1.mail["From"]表示发送者信息,包括姓名和邮件 2.mail["To"]表示接收者信息,包括姓名和邮件地址 3.mail ...

  7. python提取邮件附件_详解python实现读取邮件数据并下载附件的实例

    详解python实现读取邮件数据并下载附件的实例 实现结果图: 实现代码: #!/usr/bin/python2.7 # _*_ coding: utf-8 _*_ """ ...

  8. python中文名的发件人邮件读取解析_如何使用python收取读取邮件?

    之前给大家介绍使用python去发送邮件了,那有小伙伴提出疑问了,既然能发送,能否读取呢?如果可以用python实现,那将是个非常有趣的事情,于是小编也去查询了下,下面就给大家演示下,都来看看吧~以下 ...

  9. python exchangelib 删除邮件_Python exchangelib在子文件夹中读取邮件 - python

    我想从Outlook邮箱的子文件夹中读取邮件. Inbox ├──myfolder 我可以使用account.inbox.all()阅读收件箱,但我想阅读myfolder中的邮件 我尝试了此页面fol ...

最新文章

  1. CentOS 6.4下PXE+Kickstart无人值守安装操作系统
  2. java中对集合排序,Java如何对集合中的项目排序?
  3. CTF-web文件上传漏洞
  4. 案例 员工坐小车回家 c# 1614190875
  5. 【kafka】Flink 消费 kafka Received unknown topic topic/partition may not exist Describe access to it
  6. 直接拿来用,10个PHP代码片段
  7. 路由器的四根指针怎么放?
  8. c#水晶报表的进一步功能和使用
  9. 自定义beans.xml文件实现Spring框架
  10. CCF NOI1038 玩扑克
  11. labelme批量转换json
  12. java连接oracle数据库jdbc
  13. c语言图书管理系统出现的问题,C语言图书管理系统中的问题
  14. 布谷鸟算法(C++实现)
  15. (7) PyQt 设计并实现【工厂扫码装箱系统】- Python代码实现BarTender自动化打印条码标签
  16. ubuntu17.04 UHD 驱动出错
  17. Lingo教育版免费申请流程
  18. 20135202闫佳歆-期末总结
  19. 如何把桌面路径设置到D盘
  20. 0基础学HTML,从快捷方式(IntelliJ IDEA)入手,一步步就能看懂了!

热门文章

  1. [HUBUCTF 2022 新生赛]simple_RE
  2. 微信搜索刷关键词推广方法
  3. 学习Linux的常见故障(待更新)
  4. 好莱坞十大导演排名及其代表作,你看过多少?
  5. matlab 信号相位角,FFT信号处理后幅度、相角的问题
  6. 使用shell脚本获取当前路径的目录、上级目录、目录字段截取
  7. 【笨鸟先飞】求职记(1)
  8. 计算机组成原理课设 alu,计算机组成原理课设报告.pdf
  9. 【BZOJ】【P4407】【于神之怒加强版】【题解】【数论】
  10. 数理思维——数学运算