Python实现读取邮箱中的邮件功能示例【含文本及附件】


Posted in Python onAugust 05, 2017

本文实例讲述了Python实现读取邮箱中的邮件功能。分享给大家供大家参考,具体如下:

#-*- encoding: utf-8 -*-
import sys
import locale
import poplib
from email import parser
import email
import string
# 确定运行环境的encoding
__g_codeset = sys.getdefaultencoding()
if "ascii"==__g_codeset:
  __g_codeset = locale.getdefaultlocale()[1]
#
def object2double(obj):
  if(obj==None or obj==""):
    return 0
  else:
    return float(obj)
  #end if
#
def utf8_to_mbs(s):
  return s.decode("utf-8").encode(__g_codeset)
#
def mbs_to_utf8(s):
  return s.decode(__g_codeset).encode("utf-8")
#
host = 'pop.exmail.qq.com'
username = 'user1@xxxx.cn'
password = 'password'
pop_conn = poplib.POP3_SSL(host)
pop_conn.user(username)
pop_conn.pass_(password)
#Get messages from server:
# 获得邮件
messages = [pop_conn.retr(i) for i in range(1, len(pop_conn.list()[1]) + 1)]
#print messages
#print "--------------------------------------------------"
# Concat message pieces:
messages = ["\n".join(mssg[1]) for mssg in messages]
#print messages
#Parse message intom an email object:
# 分析
messages = [parser.Parser().parsestr(mssg) for mssg in messages]
i = 0
for index in range(0,len(messages)):
  message = messages[index];
  i = i + 1;
  subject = message.get('subject')
  h = email.Header.Header(subject)
  dh = email.Header.decode_header(h)
  subject = unicode(dh[0][0], dh[0][1]).encode('utf8')
  mailName = "mail%d.%s" % (i, subject)
  f = open('%d.log'%(i), 'w');
  print >> f, "Date: ", message["Date"]
  print >> f, "From: ", email.utils.parseaddr(message.get('from'))[1]
  print >> f, "To: ", email.utils.parseaddr(message.get('to'))[1]
  print >> f, "Subject: ", subject
  print >> f, "Data: "
  j = 0
  for part in message.walk():
    j = j + 1
    fileName = part.get_filename()
    contentType = part.get_content_type()
    mycode=part.get_content_charset();
    # 保存附件
    if fileName:
      data = part.get_payload(decode=True)
      h = email.Header.Header(fileName)
      dh = email.Header.decode_header(h)
      fname = dh[0][0]
      encodeStr = dh[0][1]
      if encodeStr != None:
        fname = fname.decode(encodeStr, mycode)
      #end if
      fEx = open("%s"%(fname), 'wb')
      fEx.write(data)
      fEx.close()
    elif contentType == 'text/plain':# or contentType == 'text/html':
      #保存正文
      data = part.get_payload(decode=True)
      content=str(data);
      if mycode=='gb2312':
        content= mbs_to_utf8(content)
      #end if
      nPos = content.find('降息')
      print("nPos is %d"%(nPos))
      print >> f, data
    #end if
  #end for
  f.close()
#end for
pop_conn.quit()

更多关于Python相关内容可查看本站专题:《Python Socket编程技巧总结》、《Python数据结构与算法教程》、《Python函数使用技巧总结》、《Python字符串操作技巧汇总》、《Python入门与进阶经典教程》及《Python文件与目录操作技巧汇总》

希望本文所述对大家Python程序设计有所帮助。

Python 相关文章推荐
python3读取MySQL-Front的MYSQL密码
May 03 Python
Python2.7.10以上pip更新及其他包的安装教程
Jun 12 Python
python selenium 获取标签的属性值、内容、状态方法
Jun 22 Python
Django rest framework工具包简单用法示例
Jul 20 Python
Python面向对象之类和实例用法分析
Jun 08 Python
python实现飞机大战小游戏
Nov 08 Python
python序列化与数据持久化实例详解
Dec 20 Python
基于python实现微信好友数据分析(简单)
Feb 16 Python
Python3将ipa包中的文件按大小排序
Apr 17 Python
python 实现两个线程交替执行
May 02 Python
python删除指定列或多列单个或多个内容实例
Jun 28 Python
matplotlib subplot绘制多个子图的方法示例
Jul 28 Python
Python实现将Excel转换为json的方法示例
Aug 05 #Python
Python实现抓取网页生成Excel文件的方法示例
Aug 05 #Python
Python基于Socket实现的简单聊天程序示例
Aug 05 #Python
Python Socket实现简单TCP Server/client功能示例
Aug 05 #Python
对pandas的dataframe绘图并保存的实现方法
Aug 05 #Python
解决PyCharm中光标变粗的问题
Aug 05 #Python
Python实现的中国剩余定理算法示例
Aug 05 #Python
You might like
[原创]php简单隔行变色功能实现代码
2016/07/09 PHP
php中array_slice和array_splice函数解析
2016/10/18 PHP
PHP+Ajax实现上传文件进度条动态显示进度功能
2018/06/04 PHP
理解Javascript_08_函数对象
2010/10/15 Javascript
基于jquery的一行代码轻松实现拖动效果
2010/12/28 Javascript
JQuery中html()方法使用不当带来的陷阱
2011/04/07 Javascript
jquery属性过滤选择器使用示例
2013/06/18 Javascript
JavaScript返回网页中锚点数目的方法
2015/04/03 Javascript
JavaScript中Function函数与Object对象的关系
2015/12/17 Javascript
浅谈jQuery中的checkbox问题
2016/08/10 Javascript
jQuery实现磁力图片跟随效果完整示例
2016/09/16 Javascript
详解利用exif.js解决ios手机上传竖拍照片旋转90度问题
2016/11/04 Javascript
JS库之Particles.js中文开发手册及参数详解
2017/09/13 Javascript
Angular利用内容投射向组件输入ngForOf模板的方法
2018/03/05 Javascript
深入浅析js原型链和vue构造函数
2018/10/25 Javascript
详解微信小程序文件下载--视频和图片
2019/04/24 Javascript
JS前端知识点总结之内置对象,日期对象和定时器相关操作
2019/07/05 Javascript
jQuery+ThinkPHP实现图片上传
2020/07/23 jQuery
[01:14:30]TNC vs VG 2019国际邀请赛淘汰赛 胜者组赛BO3 第二场 8.20.mp4
2019/08/22 DOTA
python中numpy的矩阵、多维数组的用法
2018/02/05 Python
Python字符串逆序输出的实例讲解
2019/02/16 Python
Python 利用高德地图api实现经纬度与地址的批量转换
2019/08/14 Python
Python turtle画图库&&画姓名实例
2020/01/19 Python
python GUI库图形界面开发之PyQt5窗口控件QWidget详细使用方法
2020/02/26 Python
英国最大的经认证的有机超市:Planet Organic
2018/02/02 全球购物
C#软件工程师英语面试题
2015/06/07 面试题
经理秘书找工作求职信
2013/12/19 职场文书
党校学习思想汇报
2014/01/06 职场文书
《登鹳雀楼》教学反思
2014/04/09 职场文书
学校做一个有道德的人活动方案
2014/08/23 职场文书
升国旗演讲稿
2014/09/05 职场文书
师德师风个人自我剖析材料
2014/09/27 职场文书
心灵点滴观后感
2015/06/02 职场文书
Python pygame实现中国象棋单机版源码
2021/06/20 Python
MySQL数据库表约束讲解
2022/06/21 MySQL
win sever 2022如何占用操作主机角色
2022/06/25 Servers