使用python获取邮箱邮件的设置方法


Posted in Python onSeptember 20, 2019

首先我们要在邮箱的设置中开通那个POP3

然后我们要导入这些包

import poplib
from datetime import datetime
import jieba
import re
from email.parser import Parser
from email.header import decode_header
from email.utils import parseaddr
from lxml import etree

然后进行链接

name_list = []
email = 'xxx@xx.com'
password = 'xxxxxx'
pop3_server = 'imap.exmail.qq.com'
# 连接到POP3服务器:
server = poplib.POP3(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)
print(index,'2222')
resp, lines, octets = server.retr(284)
# lines存储了邮件的原始文本的每一行,
# 可以获得整个邮件的原始文本:
msg_content = b'\r\n'.join(lines).decode('utf-8')
# 稍后解析出邮件:
msg = Parser().parsestr(msg_content)
# print(msg)
messageObject = Parser().parsestr(msg_content)
msgDate = messageObject["date"]
print(678,msgDate)
# 可以根据邮件索引号直接从服务器删除邮件:
# server.dele(index)
# 关闭连接:

这里的index是全部的邮件数量,server.retr(284),从最新的开始,retr里面传你要读取的第几个,

try:
  GMT_FORMAT = '%a, %d %b %Y %H:%M:%S +0800 (CST)'
  new_date = datetime.strptime(msgDate, GMT_FORMAT)
except:
  GMT_FORMAT = '%a, %d %b %Y %H:%M:%S +0800'
  new_date = datetime.strptime(msgDate, GMT_FORMAT)
name_list.append(str(new_date))
print(datetime.strptime(msgDate, GMT_FORMAT))

直接读取出来的时间是Tue, 17 Sep 2019 16:21:25 +0800(CST) 这种形式,这里是转为为2019-09-17 16:21:25这种亚子。哈哈

继续

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('7777',name)
      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))

这里就是读取邮件内容了

继续还有两个函数

def decode_str(s):
  value, charset = decode_header(s)[0]
  if charset:
    value = value.decode(charset)
  return value
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
print_info(msg = msg)
print(name_list)
server.quit()

就这样了

总结

以上所述是小编给大家介绍的使用python获取邮箱邮件的设置方法,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!
如果你觉得本文对你有帮助,欢迎转载,烦请注明出处,谢谢!

Python 相关文章推荐
Python入门篇之文件
Oct 20 Python
Python实现的检测网站挂马程序
Nov 30 Python
python中split方法用法分析
Apr 17 Python
Python实现扫描局域网活动ip(扫描在线电脑)
Apr 28 Python
python3中str(字符串)的使用教程
Mar 23 Python
Python中static相关知识小结
Jan 02 Python
python微信跳一跳系列之色块轮廓定位棋盘
Feb 26 Python
Python 字符串换行的多种方式
Sep 06 Python
Python3 执行系统命令并获取实时回显功能
Jul 09 Python
python GUI库图形界面开发之PyQt5窗口布局控件QStackedWidget详细使用方法
Feb 27 Python
python七种方法判断字符串是否包含子串
Aug 18 Python
Python+OpenCV检测灯光亮点的实现方法
Nov 02 Python
Python中的上下文管理器相关知识详解
Sep 19 #Python
Python Opencv提取图片中某种颜色组成的图形的方法
Sep 19 #Python
pandas read_excel()和to_excel()函数解析
Sep 19 #Python
python openvc 裁剪、剪切图片 提取图片的行和列
Sep 19 #Python
vscode 配置 python3开发环境的方法
Sep 19 #Python
python实现简易学生信息管理系统
Apr 05 #Python
Python字符串大小写转换拼接删除空白
Sep 19 #Python
You might like
php字符串分割函数explode的实例代码
2013/02/07 PHP
PHP代码保护--Zend Guard的使用详解
2013/06/03 PHP
Add a Table to a Word Document
2007/06/15 Javascript
JavaScript DOM 添加事件
2009/02/14 Javascript
JS array 数组详解
2009/03/22 Javascript
jquery 新手学习常见问题解决方法
2010/04/18 Javascript
jquery如何判断表格同一列不同行input数据是否重复
2014/05/14 Javascript
javascript文本框内输入文字倒计数的方法
2015/02/24 Javascript
JavaScript操作URL的相关内容集锦
2015/10/29 Javascript
javascript性能优化之DOM交互操作实例分析
2015/12/12 Javascript
微信小程序 实例应用(记账)详解
2016/09/28 Javascript
深入理解vue-class-component源码阅读
2019/02/18 Javascript
JS实现checkbox互斥(单选)功能示例
2019/05/04 Javascript
JavaScript逻辑运算符相关总结
2020/09/04 Javascript
Anaconda入门使用总结
2018/04/05 Python
Sanic框架流式传输操作示例
2018/07/18 Python
Python爬虫之pandas基本安装与使用方法示例
2018/08/08 Python
python3 爬取图片的实例代码
2018/11/06 Python
python-opencv获取二值图像轮廓及中心点坐标的代码
2019/08/27 Python
Python读取分割压缩TXT文本文件实例
2020/02/14 Python
Python如何实现小程序 无限求和平均
2020/02/18 Python
Python csv文件记录流程代码解析
2020/07/16 Python
python 使用csv模块读写csv格式文件的示例
2020/12/02 Python
canvas绘制文本内容自动换行的实现代码
2019/01/14 HTML / CSS
html5 canvas移动浏览器上实现图片压缩上传
2016/03/11 HTML / CSS
台湾旅游网站:雄狮旅游网
2017/08/16 全球购物
SportsDirect.com马来西亚:英国第一体育零售商
2018/11/21 全球购物
荷兰在线钓鱼商店:Raven
2019/06/26 全球购物
Waterford英国官方网站:世界上最受欢迎的优质水晶品牌
2019/08/17 全球购物
Ariat英国官网:为世界顶级马术运动员制造最优质的鞋类和服装
2020/02/14 全球购物
简述索引存取方法的作用和建立索引的原则
2013/03/26 面试题
Ajax的工作原理
2015/12/04 面试题
大学秋游活动方案
2014/02/11 职场文书
篮球比赛策划方案
2014/06/05 职场文书
借款协议书
2014/09/16 职场文书
Java中try catch处理异常示例
2021/12/06 Java/Android