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中的struct模块
Apr 28 Python
浅谈numpy中linspace的用法 (等差数列创建函数)
Jun 07 Python
Python中类的初始化特殊方法
Dec 01 Python
Python numpy实现数组合并实例(vstack,hstack)
Jan 09 Python
Python批量合并有合并单元格的Excel文件详解
Apr 05 Python
浅谈Tensorflow由于版本问题出现的几种错误及解决方法
Jun 13 Python
Python Django切换MySQL数据库实例详解
Jul 16 Python
Django Channels 实现点对点实时聊天和消息推送功能
Jul 17 Python
Python实现一个数组除以一个数的例子
Jul 20 Python
基于MATLAB和Python实现MFCC特征参数提取
Aug 13 Python
Python多线程threading join和守护线程setDeamon原理详解
Mar 18 Python
分享Python获取本机IP地址的几种方法
Mar 17 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
提取HTML标签
2006/10/09 PHP
PHP调用MySQL的存储过程的实现代码
2008/08/12 PHP
php异常处理使用示例
2014/02/25 PHP
CodeIgniter实现更改view文件夹路径的方法
2014/07/04 PHP
javascript 写类方式之一
2009/07/05 Javascript
超简单JS二级、多级联动的简单实例
2014/02/18 Javascript
javascript实例分享---具有立体效果的图片特效
2014/06/08 Javascript
jQuery插件Tmpl的简单使用方法
2015/04/27 Javascript
基于jQuery实现Ajax验证用户名是否存在实例
2016/03/30 Javascript
JavaScript Promise 用法
2016/06/14 Javascript
全面解析Angular中$Apply()及$Digest()的区别
2016/08/04 Javascript
JS 插件dropload下拉刷新、上拉加载使用小结
2017/04/13 Javascript
Vue2.0权限树组件实现代码
2017/08/29 Javascript
vue-cli启动本地服务局域网不能访问的原因分析
2018/01/22 Javascript
Vue 报错TypeError: this.$set is not a function 的解决方法
2018/12/17 Javascript
jQuery插件实现非常实用的tab栏切换功能【案例】
2019/02/18 jQuery
layui 数据表格+分页+搜索+checkbox+缓存选中项数据的方法
2019/09/21 Javascript
[01:01:24]LGD vs Fnatic 2018国际邀请赛小组赛BO2 第一场 8.18
2018/08/19 DOTA
Python中的Descriptor描述符学习教程
2016/06/02 Python
Python 加密的实例详解
2017/10/09 Python
Python实现Singleton模式的方式详解
2019/08/08 Python
解决安装新版PyQt5、PyQT5-tool后打不开并Designer.exe提示no Qt platform plugin的问题
2020/04/24 Python
简单了解如何封装自己的Python包
2020/07/08 Python
公认8个效率最高的爬虫框架
2020/07/28 Python
pycharm配置python 设置pip安装源为豆瓣源
2021/02/05 Python
Public Desire美国/加拿大:全球性的在线鞋类品牌
2018/12/17 全球购物
南非最大的在线时尚商店:Zando
2019/07/21 全球购物
在C语言中实现抽象数据类型什么方法最好
2014/06/26 面试题
实习老师个人总结的自我评价
2013/09/28 职场文书
《蒙娜丽莎之约》教学反思
2014/02/27 职场文书
幼儿园教师演讲稿
2014/05/06 职场文书
新闻工作者先进事迹
2014/05/26 职场文书
二手车转让协议书
2015/01/29 职场文书
门卫管理制度范本
2015/08/05 职场文书
OpenCV-Python实现人脸磨皮算法
2021/06/07 Python
Windows 11要来了?微软文档揭示Win11太阳谷 / Win10有两个不同版本
2021/11/21 数码科技