使用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 21 Python
Python爬虫之xlml解析库(全面了解)
Aug 08 Python
2018年Python值得关注的开源库、工具和开发者(总结篇)
Jan 04 Python
Python元组知识点总结
Feb 18 Python
python爬虫 正则表达式解析
Sep 28 Python
Python 下载及安装详细步骤
Nov 04 Python
解决pytorch报错:AssertionError: Invalid device id的问题
Jan 10 Python
Python通过TensorFLow进行线性模型训练原理与实现方法详解
Jan 15 Python
Python 中由 yield 实现异步操作
May 04 Python
Jmeter HTTPS接口测试证书导入过程图解
Jul 22 Python
Python自动化测试中yaml文件读取操作
Aug 20 Python
python Xpath语法的使用
Nov 26 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实现的pdo公共类定义与用法示例
2017/07/19 PHP
PHP操作Postgresql封装类与应用完整实例
2018/04/24 PHP
PHP数据源架构模式之表入口模式实例分析
2020/01/23 PHP
关于图片验证码设计的思考
2007/01/29 Javascript
jquery事件机制扩展插件 jquery鼠标右键事件。
2011/12/26 Javascript
教你用AngularJS框架一行JS代码实现控件验证效果
2014/06/23 Javascript
js对象继承之原型链继承实例
2015/01/10 Javascript
详解JavaScript中getFullYear()方法的使用
2015/06/10 Javascript
jQuery下拉友情链接美化效果代码分享
2015/08/26 Javascript
javascript实现数组去重的多种方法
2016/03/14 Javascript
Node.js刷新session过期时间的实现方法推荐
2016/05/18 Javascript
AngularJS基础 ng-selected 指令简单示例
2016/08/03 Javascript
Bootstrap实现圆角、圆形头像和响应式图片
2016/12/14 Javascript
Vue.js实现微信过渡动画左右切换效果
2017/06/13 Javascript
Vue组件开发技巧总结
2018/03/04 Javascript
[01:15:56]2018DOTA2亚洲邀请赛3月30日 小组赛A组 TNC VS Newbee
2018/03/31 DOTA
python将多个文本文件合并为一个文本的代码(便于搜索)
2011/03/13 Python
Python Tkinter简单布局实例教程
2014/09/03 Python
Django Highcharts制作图表
2016/08/27 Python
Python的numpy库中将矩阵转换为列表等函数的方法
2018/04/04 Python
利用python如何处理nc数据详解
2018/05/23 Python
如何给Python代码进行加密
2020/01/10 Python
python离线安装外部依赖包的实现
2020/02/13 Python
Pandas直接读取sql脚本的方法
2021/01/21 Python
python pygame 愤怒的小鸟游戏示例代码
2021/02/25 Python
css3过渡_动力节点Java学院整理
2017/07/11 HTML / CSS
很酷的小工具和电子产品商城:GearBest
2016/11/19 全球购物
印度购买眼镜和太阳镜网站:Coolwinks
2018/09/26 全球购物
软件缺陷的分类都有哪些
2014/08/22 面试题
学生档案自我鉴定
2013/10/07 职场文书
户外活动策划方案
2014/03/12 职场文书
大学自主招生推荐信
2014/05/10 职场文书
求职信怎么写
2014/05/23 职场文书
酒店辞职书怎么写
2015/02/26 职场文书
观看建国大业观后感
2015/06/01 职场文书
详细聊一聊mysql的树形结构存储以及查询
2022/04/05 MySQL