使用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多线程编程方式分析示例详解
Dec 06 Python
深入Python解释器理解Python中的字节码
Apr 01 Python
Python数据持久化shelve模块用法分析
Jun 29 Python
一百行python代码将图片转成字符画
Feb 19 Python
Python中一般处理中文的几种方法
Mar 06 Python
Pythony运维入门之Socket网络编程详解
Apr 15 Python
Python对接 xray 和微信实现自动告警
Sep 17 Python
Python线程条件变量Condition原理解析
Jan 20 Python
Python基于requests实现模拟上传文件
Apr 21 Python
Python 阶乘详解
Oct 05 Python
Python 详解通过Scrapy框架实现爬取百度新冠疫情数据流程
Nov 11 Python
详解OpenCV获取高动态范围(HDR)成像
Apr 29 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
joomla内置的表单验证功能使用方法
2010/06/11 PHP
PHP设计模式之装饰者模式
2012/02/29 PHP
解析PHP中的file_get_contents获取远程页面乱码的问题
2013/06/25 PHP
php版微信开发Token验证失败或请求URL超时问题的解决方法
2016/09/23 PHP
php 算法之实现相对路径的实例
2017/10/17 PHP
JavaScript Array扩展实现代码
2009/10/14 Javascript
JSON 学习之JSON in JavaScript详细使用说明
2010/02/23 Javascript
基于jQuery的自动完成插件
2011/02/03 Javascript
js中设置元素class的三种方法小结
2011/08/28 Javascript
Javascript实现视频轮播在pc端与移动端均可
2013/09/29 Javascript
Javascript实现获取及设置光标位置的方法
2015/07/21 Javascript
Labelauty?jQuery单选框/复选框美化插件分享
2015/09/26 Javascript
Angular表单验证实例详解
2016/10/20 Javascript
JavaScript三种绑定事件方式及相互之间的区别分析
2017/01/10 Javascript
JS简单验证上传文件类型的方法
2017/04/17 Javascript
checkbox:click事件触发span元素内容改变的方法
2017/09/11 Javascript
详解node.js中的npm和webpack配置方法
2018/01/21 Javascript
Vue使用Canvas绘制图片、矩形、线条、文字,下载图片
2019/04/26 Javascript
TensorFlow平台下Python实现神经网络
2018/03/10 Python
Python实现的读取电脑硬件信息功能示例
2018/05/30 Python
python把数组中的数字每行打印3个并保存在文档中的方法
2018/07/17 Python
解决pyinstaller打包pyqt5的问题
2019/01/08 Python
python程序控制NAO机器人行走
2019/04/29 Python
基于Python新建用户并产生随机密码过程解析
2019/10/08 Python
Python多线程实现支付模拟请求过程解析
2020/04/21 Python
socket.io 和canvas 实现的共享画板功能
2019/05/22 HTML / CSS
美国知名的网上鞋类及相关服装零售商:Shoes.com
2017/05/06 全球购物
英国领先的维生素和补充剂品牌:Higher Nature
2019/08/26 全球购物
俄罗斯最大的在线珠宝大卖场:Nebo
2019/12/08 全球购物
澳大利亚最好的电动自行车:Leon Cycle
2020/12/19 全球购物
12岁生日感言
2014/01/21 职场文书
经典促销广告词大全
2014/03/19 职场文书
中学生社会实践教育活动总结
2015/05/06 职场文书
工程款申请报告
2015/05/15 职场文书
python如何正确使用yield
2021/05/21 Python
Python 语言实现六大查找算法
2021/06/30 Python