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 相关文章推荐
深入解析Python设计模式编程中建造者模式的使用
Mar 02 Python
Python探索之SocketServer详解
Oct 28 Python
Django在win10下的安装并创建工程
Nov 20 Python
python中matplotlib的颜色及线条控制的示例
Mar 16 Python
django输出html内容的实例
May 27 Python
python中copy()与deepcopy()的区别小结
Aug 03 Python
详解如何将python3.6软件的py文件打包成exe程序
Oct 09 Python
解决django后台样式丢失,css资源加载失败的问题
Jun 11 Python
pytorch索引查找 index_select的例子
Aug 18 Python
python自动点赞功能的实现思路
Feb 26 Python
PyQt5+Pycharm安装和配置图文教程详解
Mar 24 Python
python接口测试返回数据为字典取值方式
Feb 12 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数组无限分级数据的层级化处理代码
2012/12/29 PHP
typecho插件编写教程(二):写一个新插件
2015/05/28 PHP
PHP代码判断设备是手机还是平板电脑(两种方法)
2015/10/19 PHP
Laravel5.5以下版本中如何自定义日志行为详解
2018/08/01 PHP
基于jquery的高性能td和input切换并可修改内容实现代码
2011/01/09 Javascript
ExtJs Excel导出并下载IIS服务器端遇到的问题
2011/09/16 Javascript
JS Replace()的高级使用方法介绍
2013/06/29 Javascript
关于js数组去重的问题小结
2014/01/24 Javascript
JavaScript中的acos()方法使用详解
2015/06/14 Javascript
javascript数据结构之双链表插入排序实例详解
2015/11/25 Javascript
jQuery formValidator表单验证
2016/01/07 Javascript
jQuery实现带水平滑杆的焦点图动画插件
2016/03/08 Javascript
AngularJS入门教程中SQL实例详解
2016/07/27 Javascript
js中数组插入、删除元素操作的方法
2017/02/15 Javascript
超详细动手搭建一个VuePress 站点及开启PWA与自动部署的方法
2019/01/27 Javascript
微信小程序嵌入腾讯视频源过程详解
2019/08/08 Javascript
pycharm 使用心得(四)显示行号
2014/06/05 Python
Python 比较两个数组的元素的异同方法
2017/08/17 Python
python中的subprocess.Popen()使用详解
2019/12/25 Python
如何使用selenium和requests组合实现登录页面
2020/02/03 Python
python GUI库图形界面开发之PyQt5图片显示控件QPixmap详细使用方法与实例
2020/02/27 Python
python suds访问webservice服务实现
2020/06/26 Python
关于Python3爬虫利器Appium的安装步骤
2020/07/29 Python
对Python 字典元素进行删除的方法
2020/07/31 Python
python 模块导入问题汇总
2021/02/01 Python
澳大利亚领先的女性运动服品牌:Lorna Jane
2020/06/19 全球购物
食品行业求职人的自我评价
2014/01/19 职场文书
小学五年级学生评语
2014/04/22 职场文书
优秀驾驶员先进事迹材料
2014/05/04 职场文书
计划生育责任书
2015/05/09 职场文书
党支部培养考察意见
2015/06/02 职场文书
风之谷观后感
2015/06/11 职场文书
Python人工智能之混合高斯模型运动目标检测详解分析
2021/11/07 Python
Vue操作Storage本地化存储
2022/04/29 Vue.js
Python实现双向链表
2022/05/25 Python
Python测试框架pytest核心库pluggy详解
2022/08/05 Golang