Python实现获取邮箱内容并解析的方法示例

 更新时间:2018年06月16日 14:47:20   作者:aNoobCoder  
这篇文章主要介绍了Python实现获取邮箱内容并解析的方法,结合完整实例形式分析了Python登陆pop3服务器并解析获取邮箱内容相关操作技巧,需要的朋友可以参考下

本文实例讲述了Python实现获取邮箱内容并解析的方法。分享给大家供大家参考,具体如下:

# -*- coding: utf-8 -*-
from email.parser import Parser
from email.header import decode_header
from email.utils import parseaddr
import poplib
#输入邮件地址, 口令和POP3服务器地址:
email = input('Email: ')
password = input('Password: ')
pop3_server = input('POP3 server: ')
def guess_charset(msg):
  charset = msg.get_charset()
  if charset is None:
    content_type = msg.get('Content-Type', '').lower()
    pos = content_type.find('charset=')
    if pos >= 0:
      charset = content_type[pos + 8:].strip()
  return charset
def decode_str(s):
  value, charset = decode_header(s)[0]
  if charset:
    value = value.decode(charset)
  return value
def print_info(msg, indent=0):
  if indent == 0:
    for header in ['From', 'To', 'Subject']:
      value = msg.get(header, '')
      if value:
        if header=='Subject':
          value = decode_str(value)
        else:
          hdr, addr = parseaddr(value)
          name = decode_str(hdr)
          value = u'%s <%s>' % (name, addr)
      print('%s%s: %s' % (' ' * indent, header, value))
  if (msg.is_multipart()):
    parts = msg.get_payload()
    for n, part in enumerate(parts):
      print('%spart %s' % (' ' * indent, n))
      print('%s--------------------' % (' ' * indent))
      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 = guess_charset(msg)
      if charset:
        content = content.decode(charset)
      print('%sText: %s' % (' ' * indent, content + '...'))
    else:
      print('%sAttachment: %s' % (' ' * indent, content_type))
# 连接到POP3服务器:
server = poplib.POP3_SSL(pop3_server, 995)
# 可以打开或关闭调试信息:
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)
print_info(msg)
# 可以根据邮件索引号直接从服务器删除邮件:
# server.dele(index)
# 关闭连接:
server.quit()

更多关于Python相关内容可查看本站专题:《Python Socket编程技巧总结》、《Python数据结构与算法教程》、《Python函数使用技巧总结》、《Python字符串操作技巧汇总》、《Python入门与进阶经典教程》及《Python文件与目录操作技巧汇总

希望本文所述对大家Python程序设计有所帮助。

相关文章

  • Python批量改变图片名字的示例代码

    Python批量改变图片名字的示例代码

    本文主要介绍了Python批量改变图片名字的示例代码,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2022-05-05
  • python中创建一个包并引用使用的操作方法

    python中创建一个包并引用使用的操作方法

    python包在开发中十分常见,一般通过导入包含特定功能的python模块包进行使用。当然,也可以自己创建打包模块,然后发布,安装使用,这篇文章主要介绍了python中如何创建一个包并引用使用,需要的朋友可以参考下
    2022-08-08
  • python 默认参数相关知识详解

    python 默认参数相关知识详解

    这篇文章主要介绍了python 默认参数相关知识详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-09-09
  • 创建Django项目图文实例详解

    创建Django项目图文实例详解

    这篇文章主要介绍了创建Django项目,结合图文与实例形式详细分析了Django项目创建的具体步骤与相关操作技巧,需要的朋友可以参考下
    2019-06-06
  • Python 解决OPEN读文件报错 ,路径以及r的问题

    Python 解决OPEN读文件报错 ,路径以及r的问题

    今天小编就为大家分享一篇Python 解决OPEN读文件报错 ,路径以及r的问题,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-12-12
  • python生成验证码图片代码分享

    python生成验证码图片代码分享

    这篇文章主要为大家介绍了python生成验证码图片代码,生成原理是将一串随机产生的数字或符号,生成一幅图片,图片里加上一些干扰象素,想要实现验证码图片的朋友可以参考一下
    2016-01-01
  • Python合并多张图片成PDF

    Python合并多张图片成PDF

    最近需要将记的笔记整理成一个pdf进行保存,所以就研究了一下如何利用Python代码将拍下来的照片整个合并成一个pdf,感兴趣的可以了解一下
    2021-06-06
  • Python获取秒级时间戳与毫秒级时间戳的示例代码

    Python获取秒级时间戳与毫秒级时间戳的示例代码

    这篇文章主要介绍了Python获取秒级时间戳与毫秒级时间戳的示例代码,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-04-04
  • 面向初学者的Python编辑器Mu

    面向初学者的Python编辑器Mu

    今天小编就为大家分享一篇关于一个面向初学者的Python编辑器Mu,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
    2018-10-10
  • python写入中英文字符串到文件的方法

    python写入中英文字符串到文件的方法

    这篇文章主要介绍了python写入中英文字符串到文件的方法,实例分析了Python操作中英文字符串的技巧,非常简单实用,需要的朋友可以参考下
    2015-05-05

最新评论