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的内存
Dec 17 Python
Django项目实战之用户头像上传与访问的示例
Apr 21 Python
对python程序内存泄漏调试的记录
Jun 11 Python
Python二叉树的遍历操作示例【前序遍历,中序遍历,后序遍历,层序遍历】
Dec 24 Python
Numpy之random函数使用学习
Jan 29 Python
Python里字典的基本用法(包括嵌套字典)
Feb 27 Python
Python实现Mysql数据统计及numpy统计函数
Jul 15 Python
Python配置文件处理的方法教程
Aug 29 Python
python实现从wind导入数据
Dec 03 Python
Python小白不正确的使用类变量实例
May 29 Python
Python爬虫入门教程01之爬取豆瓣Top电影
Jan 24 Python
python利用opencv实现颜色检测
Feb 23 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调用三种数据库的方法(2)
2006/10/09 PHP
PHP重定向的3种方式
2013/03/07 PHP
php array_walk 对数组中的每个元素应用用户自定义函数详解
2016/11/18 PHP
Jquery 基础学习笔记
2009/05/29 Javascript
JavaScript 异步调用框架 (Part 3 - 代码实现)
2009/08/04 Javascript
jquery EasyUI的formatter格式化函数代码
2011/01/12 Javascript
如何让DIV可编辑、可拖动示例代码
2013/09/18 Javascript
最好用的省市二级联动 原生js实现你值得拥有
2013/09/22 Javascript
js onclick事件传参讲解
2013/11/06 Javascript
JavaScript函数作用域链分析
2015/02/13 Javascript
JS实现经典的中国地区三级联动下拉菜单功能实例【测试可用】
2017/06/06 Javascript
php register_shutdown_function函数详解
2017/07/23 Javascript
js 提取某()特殊字符串长度的实例
2017/12/06 Javascript
了解在JavaScript中将值转换为字符串的5种方法
2019/06/06 Javascript
[45:34]完美世界DOTA2联赛PWL S3 Rebirth vs CPG 第一场 12.18
2020/12/19 DOTA
Python的Tornado框架的异步任务与AsyncHTTPClient
2016/06/27 Python
Django管理员账号和密码忘记的完美解决方法
2018/12/06 Python
python中HTMLParser模块知识点总结
2021/01/25 Python
AmazeUI 平滑滚动效果的示例代码
2020/08/20 HTML / CSS
美国巧克力喷泉品牌:Sephra
2019/05/05 全球购物
兰蔻俄罗斯官方网站:Lancome俄罗斯
2019/12/09 全球购物
兰兰过桥教学反思
2014/02/08 职场文书
专科应届毕业生求职信
2014/06/04 职场文书
校运会口号
2014/06/18 职场文书
先进工作者事迹材料
2014/12/23 职场文书
2015年学习部工作总结范文
2015/03/31 职场文书
离婚答辩状怎么写
2015/05/22 职场文书
关于环保的宣传稿
2015/07/23 职场文书
大学优秀学生主要事迹材料
2015/11/04 职场文书
《颐和园》教学反思
2016/02/19 职场文书
Python打包exe时各种异常处理方案总结
2021/05/18 Python
jQuery实现广告显示和隐藏动画
2021/07/04 jQuery
MongoDB支持的索引类型
2022/04/11 MongoDB
GTX1660显卡搭配显示器推荐
2022/04/19 数码科技
python 学习GCN图卷积神经网络
2022/05/11 Python
python 镜像环境搭建总结
2022/09/23 Python