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模块之StringIO使用示例
Apr 08 Python
简单介绍Python中利用生成器实现的并发编程
May 04 Python
Python编程之微信推送模板消息功能示例
Aug 21 Python
单链表反转python实现代码示例
Feb 08 Python
python+pyqt5编写md5生成器
Mar 18 Python
在VS2017中用C#调用python脚本的实现
Jul 31 Python
Python类继承和多态原理解析
Feb 05 Python
Pycharm 安装 idea VIM插件的图文教程详解
Feb 21 Python
Python object类中的特殊方法代码讲解
Mar 06 Python
python为QT程序添加图标的方法详解
Mar 09 Python
Pycharm及python安装详细教程(图解)
Jul 31 Python
python绘图模块之利用turtle画图
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动态创建Web站点的方法
2011/08/14 PHP
PHP数组和explode函数示例总结
2015/05/08 PHP
PHP中new static()与new self()的比较
2016/08/19 PHP
PHP实现将标点符号正则替换为空格的方法
2017/08/09 PHP
详解json在php中的应用
2018/09/30 PHP
Laravel框架实现超简单的分页效果示例
2019/02/08 PHP
用js将内容复制到剪贴板兼容浏览器
2014/03/18 Javascript
JavaScript常用小技巧小结
2014/12/29 Javascript
js鼠标点击图片切换效果实现代码
2015/11/19 Javascript
EasyUi中的Combogrid 实现分页和动态搜索远程数据
2016/04/01 Javascript
jquery分隔Url的param方法(推荐)
2016/05/25 Javascript
浅析Node.js实现HTTP文件下载
2016/08/05 Javascript
浅谈js对象属性 通过点(.) 和方括号([]) 的不同之处
2016/10/29 Javascript
利用JQuery实现datatables插件的增加和删除行功能
2017/01/06 Javascript
Vue获取DOM元素样式和样式更改示例
2017/03/07 Javascript
vue-cli的webpack模板项目配置文件分析
2017/04/01 Javascript
angular学习之从零搭建一个angular4.0项目
2017/07/10 Javascript
详解webpack进阶之loader篇
2017/08/23 Javascript
详解ECMAScript typeof用法
2018/07/25 Javascript
Vue——解决报错 Computed property "****" was assigned to but it has no setter.
2020/12/19 Vue.js
[01:15:29]DOTA2上海特级锦标赛主赛事日 - 3 胜者组第二轮#2Secret VS EG第三局
2016/03/04 DOTA
python自定义解析简单xml格式文件的方法
2015/05/11 Python
基于Python Numpy的数组array和矩阵matrix详解
2018/04/04 Python
python自动发送邮件脚本
2018/06/20 Python
200行python代码实现2048游戏
2019/07/17 Python
Python关键字及可变参数*args,**kw原理解析
2020/04/04 Python
意大利简约的休闲品牌:Aspesi
2018/02/08 全球购物
荷兰和比利时时尚鞋店:Van Dalen
2018/04/23 全球购物
mysql有关权限的表都有哪几个
2015/04/22 面试题
《有趣的发现》教学反思
2014/04/15 职场文书
对外汉语专业大学生职业生涯规划范文
2014/09/13 职场文书
2014年环卫工作总结
2014/11/22 职场文书
2014年党风廉政工作总结
2014/12/03 职场文书
党员带头倡议书
2015/04/29 职场文书
幼儿园教师读书笔记
2015/06/29 职场文书
mysqldump进行数据备份详解
2022/07/15 MySQL