使用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使用代理抓取网站图片(多线程)
Mar 14 Python
Python爬虫辅助利器PyQuery模块的安装使用攻略
Apr 24 Python
Python 获得13位unix时间戳的方法
Oct 20 Python
Python实现嵌套列表及字典并按某一元素去重复功能示例
Nov 30 Python
python命令行解析之parse_known_args()函数和parse_args()使用区别介绍
Jan 24 Python
python 去除txt文本中的空格、数字、特定字母等方法
Jul 24 Python
python3中类的继承以及self和super的区别详解
Jun 26 Python
TensorFlow2.1.0安装过程中setuptools、wrapt等相关错误指南
Apr 08 Python
关于keras中keras.layers.merge的用法说明
May 23 Python
Python2.x与3​​.x版本有哪些区别
Jul 09 Python
学生如何注册Pycharm专业版以及pycharm的安装
Sep 24 Python
Django如何重置migration的几种情景
Feb 24 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
DC宇宙的第一个英雄,堪称动漫史鼻祖,如今成为美国文化的象征
2020/04/09 欧美动漫
Php注入点构造代码
2008/06/14 PHP
ThinkPHP使用心得分享-ThinkPHP + Ajax 实现2级联动下拉菜单
2014/05/15 PHP
PHP Try-catch 语句使用技巧
2016/02/28 PHP
PHP中检查isset()和!empty()函数的必要性
2019/02/13 PHP
PHP实现的敏感词过滤方法示例
2019/03/06 PHP
extjs 为某个事件设置拦截器
2010/01/15 Javascript
js 判断浏览器使用的语言示例代码
2014/03/22 Javascript
node.js中的fs.fchown方法使用说明
2014/12/16 Javascript
jQuery实现个性翻牌效果导航菜单的方法
2015/03/09 Javascript
JS实现的车标图片提示效果代码
2015/10/10 Javascript
jQuery中text() val()和html()的区别实例详解
2016/06/28 Javascript
JavaScript Ajax编程 应用篇
2016/07/02 Javascript
Javascript中内建函数reduce的应用详解
2016/10/20 Javascript
原生js实现放大镜效果
2017/01/11 Javascript
封装运动框架实战左右与上下滑动的焦点轮播图(实例)
2017/10/17 Javascript
JavaScript调用模式与this关键字绑定的关系
2018/04/21 Javascript
解决vuejs 使用value in list 循环遍历数组出现警告的问题
2018/09/26 Javascript
vue指令做滚动加载和监听等
2019/05/26 Javascript
Jquery 动态添加元素并添加点击事件实现过程解析
2019/10/12 jQuery
js实现简易计算器小功能
2020/11/18 Javascript
Ubuntu 14.04+Django 1.7.1+Nginx+uwsgi部署教程
2014/11/18 Python
Python中的time模块与datetime模块用法总结
2016/06/30 Python
python读取和保存视频文件
2018/04/16 Python
Python实现的朴素贝叶斯算法经典示例【测试可用】
2018/06/13 Python
用Python将mysql数据导出成json的方法
2018/08/21 Python
Python Django 页面上展示固定的页码数实现代码
2019/08/21 Python
Python查找不限层级Json数据中某个key或者value的路径方式
2020/02/27 Python
python 实现倒计时功能(gui界面)
2020/11/11 Python
国际礼品店:GiftsnIdeas
2018/05/03 全球购物
车间组长岗位职责
2013/12/20 职场文书
单位委托书怎么写
2014/08/02 职场文书
社区敬老月活动总结
2015/05/07 职场文书
刑事上诉状(无罪)
2015/05/23 职场文书
Python实现滑雪小游戏
2021/09/25 Python
在windows server 2012 r2中安装mysql的详细步骤
2022/07/23 Servers