使用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 04 Python
python 系统调用的实例详解
Jul 11 Python
Django实现简单分页功能的方法详解
Dec 05 Python
Python反射的用法实例分析
Feb 11 Python
python爬虫之urllib3的使用示例
Jul 09 Python
Python利用ORM控制MongoDB(MongoEngine)的步骤全纪录
Sep 13 Python
python每天定时运行某程序代码
Aug 16 Python
Django如何实现上传图片功能
Aug 16 Python
python3 sleep 延时秒 毫秒实例
May 04 Python
浅谈keras中的目标函数和优化函数MSE用法
Jun 10 Python
使用python实现名片管理系统
Jun 18 Python
python flask框架快速入门
May 14 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读取超大文件的实例代码
2012/04/01 PHP
PHP读取xml方法介绍
2013/01/12 PHP
php页面消耗内存过大的处理办法
2013/03/18 PHP
PHP转换文件夹下所有文件编码的实现代码
2013/06/06 PHP
PHP JWT初识及其简单示例
2018/10/10 PHP
JavaScript的Cookies
2008/01/16 Javascript
非阻塞动态加载javascript广告实现代码
2010/11/17 Javascript
判断用户是否在线的代码
2011/03/05 Javascript
jquery 事件冒泡的介绍以及如何阻止事件冒泡
2012/12/25 Javascript
window.location.href IE下跳转失效的解决方法
2014/03/27 Javascript
jQuery构造函数init参数分析续
2015/05/13 Javascript
浅析Node.js的Stream模块中的Readable对象
2015/07/29 Javascript
node vue项目开发之前后端分离实战记录
2017/12/13 Javascript
Vue 组件参数校验与非props特性的方法
2019/02/12 Javascript
通过循环优化 JavaScript 程序
2019/06/24 Javascript
扫微信小程序码实现网站登陆实现解析
2019/08/20 Javascript
利用Python中unittest实现简单的单元测试实例详解
2017/01/09 Python
python DataFrame获取行数、列数、索引及第几行第几列的值方法
2018/04/08 Python
Python基于生成器迭代实现的八皇后问题示例
2018/05/23 Python
python用pandas数据加载、存储与文件格式的实例
2018/12/07 Python
Python实现批量执行同目录下的py文件方法
2019/01/11 Python
python Tkinter版学生管理系统
2019/02/20 Python
python实现QQ批量登录功能
2019/06/19 Python
django框架模型层功能、组成与用法分析
2019/07/30 Python
django orm模块中的 is_delete用法
2020/05/20 Python
python 如何引入协程和原理分析
2020/11/30 Python
小狗电器官方商城:中国高端吸尘器品牌
2017/03/29 全球购物
彪马俄罗斯官网:PUMA俄罗斯
2019/07/13 全球购物
英国比较机场停车场网站:Airport Parking Essentials
2019/12/01 全球购物
AssertionError 跟一下那个类是 “is – a”的关系
2012/02/21 面试题
自我鉴定总结
2014/03/24 职场文书
职务聘任书范文
2014/03/29 职场文书
增员口号大全
2014/06/18 职场文书
《改造我们的学习》心得体会
2014/11/07 职场文书
校园广播站开场白
2015/06/01 职场文书
三八妇女节主持词
2015/07/04 职场文书