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 获取本机ip地址的两个方法
Feb 25 Python
使用python的chardet库获得文件编码并修改编码
Jan 22 Python
Python3之文件读写操作的实例讲解
Jan 23 Python
用十张图详解TensorFlow数据读取机制(附代码)
Feb 06 Python
Python微信操控itchat的方法
May 31 Python
PyQt5笔记之弹出窗口大全
Jun 20 Python
Django 查询数据库并返回页面的例子
Aug 12 Python
python爬虫 urllib模块发起post请求过程解析
Aug 20 Python
tensorflow的ckpt及pb模型持久化方式及转化详解
Feb 12 Python
django模型类中,null=True,blank=True用法说明
Jul 09 Python
全网最全python库selenium自动化使用详细教程
Jan 12 Python
python 常用的异步框架汇总整理
Jun 18 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采集类snoopy详细介绍(snoopy使用教程)
2014/06/19 PHP
php 访问oracle 存储过程实例详解
2017/01/08 PHP
php双层循环(九九乘法表)
2017/10/23 PHP
PHP封装的XML简单操作类完整实例
2017/11/13 PHP
php语法检查的方法总结
2019/01/21 PHP
javascript类继承机制的原理分析
2009/09/12 Javascript
读jQuery之十三 添加事件和删除事件的核心方法
2011/08/23 Javascript
jquery mobile实现拨打电话功能的几种方法
2013/08/05 Javascript
java与javascript之间json格式数据互转介绍
2013/10/29 Javascript
jQuery解析XML与传统JavaScript方法的差别实例分析
2015/03/05 Javascript
Node.js返回JSONP详解
2016/05/18 Javascript
node.js操作mongodb简单示例分享
2017/05/25 Javascript
Vue导出json数据到Excel电子表格的示例
2017/12/04 Javascript
基于mpvue的小程序项目搭建的步骤
2018/05/22 Javascript
js中获取URL参数的共用方法getRequest()方法实例详解
2018/10/24 Javascript
详解vue页面首次加载缓慢原因及解决方案
2019/11/06 Javascript
微信小程序实现音乐播放器
2019/11/20 Javascript
vue中keep-alive内置组件缓存的实例代码
2020/04/16 Javascript
手机浏览器唤起微信分享(JS)
2020/10/11 Javascript
python3爬取各类天气信息
2018/02/24 Python
Python初学者需要注意的事项小结(python2与python3)
2018/09/26 Python
Python读取mat文件,并保存为pickle格式的方法
2018/10/23 Python
Django Docker容器化部署之Django-Docker本地部署
2019/10/09 Python
通过实例解析Python return运行原理
2020/03/04 Python
Python使用requests模块爬取百度翻译
2020/08/25 Python
极简的HTML5模版
2015/07/09 HTML / CSS
ghd澳大利亚官方网站:英国最受欢迎的美发工具品牌
2018/05/21 全球购物
Skyscanner香港:机票比价, 平机票和廉价航空机票预订
2020/02/07 全球购物
struct和class的区别
2015/11/20 面试题
介绍一下木马病毒的种类
2015/07/26 面试题
好的演讲稿开场白
2013/12/30 职场文书
签订劳动合同通知书
2015/04/16 职场文书
2015年保险业务员工作总结
2015/05/27 职场文书
投诉信格式范文
2015/07/02 职场文书
早恋主题班会
2015/08/14 职场文书
使用nginx动态转换图片大小生成缩略图
2021/03/31 Servers