使用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调用java的Webservice示例
Mar 10 Python
python socket 超时设置 errno 10054
Jul 01 Python
编写Python脚本批量下载DesktopNexus壁纸的教程
May 06 Python
Python中的zipfile模块使用详解
Jun 25 Python
python 中的int()函数怎么用
Oct 17 Python
python selenium UI自动化解决验证码的4种方法
Jan 05 Python
django限制匿名用户访问及重定向的方法实例
Feb 07 Python
pandas 对每一列数据进行标准化的方法
Jun 09 Python
pyqt5 禁止窗口最大化和禁止窗口拉伸的方法
Jun 18 Python
Python时间序列缺失值的处理方法(日期缺失填充)
Aug 11 Python
Keras中 ImageDataGenerator函数的参数用法
Jul 03 Python
浅析python 通⽤爬⾍和聚焦爬⾍
Sep 28 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中mysql_field_type()函数用法
2014/11/24 PHP
理解JavaScript的caller,callee,call,apply
2009/04/28 Javascript
9个JavaScript评级/投票插件
2010/01/18 Javascript
jQuery 获取对象 根据属性、内容匹配, 还有表单元素匹配
2010/05/31 Javascript
jquery控制表单输入框显示默认值的方法
2015/05/22 Javascript
BootStrap 智能表单实战系列(十)自动完成组件的支持
2016/06/13 Javascript
详解vue 实例方法和数据
2017/10/23 Javascript
React如何避免重渲染
2018/04/10 Javascript
Vue.js 实现微信公众号菜单编辑器功能(二)
2018/05/08 Javascript
H5+C3+JS实现五子棋游戏(AI篇)
2020/05/28 Javascript
angular 表单验证器验证的同时限制输入的实现
2019/04/11 Javascript
layer页面跳转,获取html子节点元素的值方法
2019/09/27 Javascript
JS实现联想、自动补齐国家或地区名称的功能
2020/07/07 Javascript
前端使用crypto.js进行加密的函数代码
2020/08/16 Javascript
Python处理字符串之isspace()方法的使用
2015/05/19 Python
使用Python绘制图表大全总结
2017/02/11 Python
Sanic框架基于类的视图用法示例
2018/07/18 Python
python实现遍历文件夹修改文件后缀
2018/08/28 Python
Python3远程监控程序的实现方法
2019/07/15 Python
Django 外键的使用方法详解
2019/07/19 Python
Django后端发送小程序微信模板消息示例(服务通知)
2019/12/17 Python
python、PyTorch图像读取与numpy转换实例
2020/01/13 Python
如何解决tensorflow恢复模型的特定值时出错
2020/02/06 Python
python自动脚本的pyautogui入门学习
2020/04/01 Python
Python 解析简单的XML数据
2020/07/24 Python
Python实现一个简单的递归下降分析器
2020/08/01 Python
纯CSS3实现3D旋转书本效果
2016/03/21 HTML / CSS
HTML5打开手机扫码功能及优缺点
2017/11/27 HTML / CSS
官方授权图形T恤和服装:Fifth Sun
2019/06/12 全球购物
日语专业毕业生求职信
2013/12/04 职场文书
函授教育个人学习的自我评价
2013/12/31 职场文书
宿舍违规检讨书
2014/01/12 职场文书
导师推荐信范文
2014/05/09 职场文书
社区禁毒工作方案
2014/06/02 职场文书
组织鉴定材料
2014/06/02 职场文书
团队拓展训练感想
2015/08/07 职场文书