使用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使用cookie库操保存cookie详解
Mar 03 Python
详细解析Python当中的数据类型和变量
Apr 25 Python
微信跳一跳python自动代码解读1.0
Jan 12 Python
Python自定义装饰器原理与用法实例分析
Jul 16 Python
Python WEB应用部署的实现方法
Jan 02 Python
Python注释、分支结构、循环结构、伪“选择结构”用法实例分析
Jan 09 Python
使用python编写一个语音朗读闹钟功能的示例代码
Jul 14 Python
python如何删除列为空的行
Jul 17 Python
Django CBV模型源码运行流程详解
Aug 17 Python
matplotlib设置颜色、标记、线条,让你的图像更加丰富(推荐)
Sep 25 Python
Python+Appium实现自动化清理微信僵尸好友的方法
Feb 04 Python
pytest实现多进程与多线程运行超好用的插件
Jul 15 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
使用WordPress发送电子邮件的相关PHP函数用法解析
2015/12/15 PHP
php函数mkdir实现递归创建层级目录
2016/10/27 PHP
yii2使用GridView实现数据全选及批量删除按钮示例
2017/03/01 PHP
jquery插件unobtrusive实现片段式加载
2015/06/15 Javascript
onclick和onblur冲突问题的快速解决方法
2016/04/28 Javascript
Vue.js中组件中的slot实例详解
2017/07/17 Javascript
ActiveX控件的使用-js实现打印超市小票功能代码详解
2017/11/22 Javascript
vue2.0+vuex+localStorage代办事项应用实现详解
2018/05/31 Javascript
JavaScript中常用的简洁高级技巧总结
2019/03/10 Javascript
Javascript Web Worker使用过程解析
2020/03/16 Javascript
[40:55]DOTA2上海特级锦标赛主赛事日 - 2 败者组第二轮#4Newbee VS Fnatic
2016/03/03 DOTA
python中遍历文件的3个方法
2014/09/02 Python
为Python的web框架编写前端模版的教程
2015/04/30 Python
Python随机数用法实例详解【基于random模块】
2017/04/18 Python
Python使用matplotlib的pie函数绘制饼状图功能示例
2018/01/08 Python
详解django三种文件下载方式
2018/04/06 Python
python 读入多行数据的实例
2018/04/19 Python
python学生信息管理系统(完整版)
2020/04/05 Python
pytorch 修改预训练model实例
2020/01/18 Python
html5+css3之CSS中的布局与Header的实现
2014/11/21 HTML / CSS
HTML 5.1来了 9月份正式发布 更新内容预览
2016/04/26 HTML / CSS
StubHub美国:购买或出售您的门票
2019/07/09 全球购物
美国体育用品商店:Academy Sports + Outdoors
2020/01/04 全球购物
OLEDBConnection和SQLConnection有什么区别
2013/05/31 面试题
linux下进程间通信的方式
2013/01/23 面试题
高中毕业生个人自我鉴定
2013/11/24 职场文书
生物医学工程专业学生求职信范文分享
2013/12/14 职场文书
学生自我鉴定
2013/12/18 职场文书
法律七进实施方案
2014/03/15 职场文书
个人贷款承诺书
2014/03/28 职场文书
医院搬迁方案
2014/06/14 职场文书
三八妇女节趣味活动方案
2014/08/23 职场文书
医疗专业毕业生求职信
2014/08/28 职场文书
2015年父亲节寄语
2015/03/23 职场文书
分析Python list操作为什么会错误
2021/11/17 Python
mysql查看表结构的三种方法总结
2022/07/07 MySQL