使用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 图片验证码代码分享
Jul 04 Python
一个检测OpenSSL心脏出血漏洞的Python脚本分享
Apr 10 Python
在Python 2.7即将停止支持时,我们为你带来了一份python 3.x迁移指南
Jan 30 Python
python主线程捕获子线程的方法
Jun 17 Python
Python Socket编程之多线程聊天室
Jul 28 Python
python提取包含关键字的整行数据方法
Dec 11 Python
详解Python3中ceil()函数用法
Feb 19 Python
Python实现定时执行任务的三种方式简单示例
Mar 30 Python
PyQt5固定窗口大小的方法
Jun 18 Python
对pytorch中的梯度更新方法详解
Aug 20 Python
利用pandas合并多个excel的方法示例
Oct 10 Python
python海龟绘图之画国旗实例代码
Nov 11 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防止sql注入示例分析和几种常见攻击正则表达式
2014/01/12 PHP
PHP实现计算器小功能
2020/08/28 PHP
JQuery自定义事件的应用 JQuery最佳实践
2010/08/01 Javascript
多种方法判断Javascript对象是否存在
2013/09/22 Javascript
jQuery实现可用于博客的动态滑动菜单
2015/03/09 Javascript
AngularJS转换响应内容
2016/01/27 Javascript
jquery通过name属性取值的简单实现方法
2016/06/20 Javascript
详解Angular开发中的登陆与身份验证
2016/07/27 Javascript
基于js里调用函数时,函数名带括号和不带括号的区别
2016/07/28 Javascript
js生成随机颜色方法代码分享(三种)
2016/12/29 Javascript
jquery,js简单实现类似Angular.js双向绑定
2017/01/13 Javascript
React服务端渲染(总结)
2017/07/01 Javascript
详解Vue2.0 事件派发与接收
2017/09/05 Javascript
Angular2 父子组件通信方式的示例
2018/01/29 Javascript
javascript实现fetch请求返回的统一拦截
2019/12/22 Javascript
小程序中设置缓存过期的实现方法
2020/01/14 Javascript
微信小程序实现电影App导航和轮播
2020/11/30 Javascript
Django中login_required装饰器的深入介绍
2017/11/24 Python
Django的分页器实例(paginator)
2017/12/01 Python
pandas 获取季度,月度,年度首尾日期的方法
2018/04/11 Python
Django表单提交后实现获取相同name的不同value值
2020/05/14 Python
Python控制鼠标键盘代码实例
2020/12/08 Python
python定义具名元组实例操作
2021/02/28 Python
css3中flex布局宽度不生效的解决
2020/12/09 HTML / CSS
AE美国鹰美国官方网站:American Eagle Outfitters
2016/08/22 全球购物
文员岗位职责范本
2014/03/08 职场文书
高三毕业寄语
2014/04/10 职场文书
小学生国旗下演讲稿
2014/04/25 职场文书
2015大学自主招生自荐信范文
2015/03/04 职场文书
煤矿隐患排查制度
2015/08/05 职场文书
2019最新版劳务派遣管理制度
2019/08/16 职场文书
Python Django框架介绍之模板标签及模板的继承
2021/05/27 Python
Python图片验证码降噪和8邻域降噪
2021/08/30 Python
Spring-cloud Config Server的3种配置方式
2021/09/25 Java/Android
python创建字典及相关管理操作
2022/04/13 Python
Linux中各个目录的作用与内容
2022/06/28 Servers