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解析模块(ConfigParser)使用方法
Dec 10 Python
Python切片用法实例教程
Sep 08 Python
Python列表计数及插入实例
Dec 17 Python
python实现按行切分文本文件的方法
Apr 18 Python
python爬虫项目设置一个中断重连的程序的实现
Jul 26 Python
numpy数组做图片拼接的实现(concatenate、vstack、hstack)
Nov 08 Python
用Python画小女孩放风筝的示例
Nov 23 Python
python操作cfg配置文件方式
Dec 22 Python
如何基于Python实现数字类型转换
Feb 07 Python
python图形开发GUI库pyqt5的基本使用方法详解
Feb 14 Python
Win10用vscode打开anaconda环境中的python出错问题的解决
May 25 Python
python 8种必备的gui库
Aug 27 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中使用explode查找某个字符是否存在的方法
2011/07/12 PHP
php加密解密实用类分享
2014/01/07 PHP
Yii框架调试心得--在页面输出执行sql语句
2014/12/25 PHP
ThinkPHP提示错误Fatal error: Allowed memory size的解决方法
2015/02/12 PHP
php动态函数调用方法
2015/05/21 PHP
javascript RadioButtonList获取选中值
2009/04/09 Javascript
jQuery中校验时间格式的正则表达式小结
2013/09/22 Javascript
打造个性化的功能强大的Jquery虚拟键盘(VirtualKeyboard)
2014/10/11 Javascript
jQuery实现自动输入email、时间和域名的方法
2016/08/24 Javascript
微信+angularJS的SPA应用中用router进行页面跳转,jssdk校验失败问题解决
2016/09/09 Javascript
强大Vue.js组件浅析
2016/09/12 Javascript
JS实现类似51job上的地区选择效果示例
2016/11/17 Javascript
Angular 输入框实现自定义验证功能
2017/02/19 Javascript
jQuery插件zTree实现单独选中根节点中第一个节点示例
2017/03/08 Javascript
ES6新特性五:Set与Map的数据结构实例分析
2017/04/21 Javascript
Vue源码解析之数据响应系统的使用
2019/04/24 Javascript
在Python中使用base64模块处理字符编码的教程
2015/04/28 Python
Python中pygame安装方法图文详解
2015/11/11 Python
Python的包管理器pip更换软件源的方法详解
2016/06/20 Python
Python编程中NotImplementedError的使用方法
2018/04/21 Python
Python实现的拉格朗日插值法示例
2019/01/08 Python
python使用PIL实现多张图片垂直合并
2019/01/15 Python
python如何实现复制目录到指定目录
2020/02/13 Python
python求最大公约数和最小公倍数的简单方法
2020/02/13 Python
TensorFlow2.X结合OpenCV 实现手势识别功能
2020/04/08 Python
python DES加密与解密及hex输出和bs64格式输出的实现代码
2020/04/13 Python
Python连接Mysql进行增删改查的示例代码
2020/08/03 Python
Windows下Sqlmap环境安装教程详解
2020/08/04 Python
美国在线精品家居网站:Burke Decor
2017/04/12 全球购物
加拿大建筑和装修专家:Reno-Depot
2017/12/21 全球购物
美国在线鞋类零售商:LifeStride
2019/06/09 全球购物
Oral-B荷兰:牙医最推荐的品牌
2020/02/25 全球购物
质量月活动策划方案
2014/03/10 职场文书
标准毕业生自荐信
2014/06/24 职场文书
活动总结模板大全
2015/05/11 职场文书
Python opencv缺陷检测的实现及问题解决
2021/04/24 Python