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 SQLAlchemy基本操作和常用技巧(包含大量实例,非常好)
May 06 Python
Python实现检测服务器是否可以ping通的2种方法
Jan 01 Python
Python利用多进程将大量数据放入有限内存的教程
Apr 01 Python
实例说明Python中比较运算符的使用
May 13 Python
python中in在list和dict中查找效率的对比分析
May 04 Python
Python get获取页面cookie代码实例
Sep 12 Python
Python自定义一个异常类的方法
Jun 27 Python
Python监控服务器实用工具psutil使用解析
Dec 19 Python
pandas分批读取大数据集教程
Jun 06 Python
Python 实现键盘鼠标按键模拟
Nov 18 Python
python实现企业微信定时发送文本消息的示例代码
Nov 24 Python
关于python中模块和重载的问题
Nov 02 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.ini中文版(2)
2006/10/09 PHP
php解决约瑟夫环示例
2014/04/09 PHP
编写PHP脚本来实现WordPress中评论分页的功能
2015/12/10 PHP
php array_merge_recursive 数组合并
2016/10/26 PHP
静态html文件执行php语句的方法(推荐)
2016/11/21 PHP
PHP常用日期加减计算方法实例小结
2018/07/31 PHP
使用jquery动态加载javascript以减少服务器压力
2012/10/29 Javascript
推荐10个2014年最佳的jQuery视频插件
2014/11/12 Javascript
JS实现至少包含字母、大小写数字、字符的密码等级的两种方法
2015/02/03 Javascript
jQuery实现无限往下滚动效果代码
2016/04/16 Javascript
原生JS京东轮播图代码
2017/03/22 Javascript
Angularjs中使用指令绑定点击事件的方法
2017/03/30 Javascript
jQuery用户头像裁剪插件cropbox.js使用详解
2017/06/07 jQuery
详解Node全局变量global模块
2017/09/28 Javascript
vue如何通过id从列表页跳转到对应的详情页
2018/05/01 Javascript
jQuery实现仿京东防抖动菜单效果示例
2018/07/06 jQuery
详解Vue改变数组中对象的属性不重新渲染View的解决方案
2018/09/21 Javascript
Vue中多元素过渡特效的解决方案
2020/02/05 Javascript
Python实现的二维码生成小软件
2014/07/11 Python
浅析Python中的序列化存储的方法
2015/04/28 Python
python 查找文件名包含指定字符串的方法
2018/06/05 Python
Python OpenCV实现鼠标画框效果
2020/08/19 Python
python excel转换csv代码实例
2019/08/26 Python
Python打包模块wheel的使用方法与将python包发布到PyPI的方法详解
2020/02/12 Python
计算Python Numpy向量之间的欧氏距离实例
2020/05/22 Python
在Pytorch中使用Mask R-CNN进行实例分割操作
2020/06/24 Python
使用CSS3实现input多选框自定义样式的方法示例
2019/07/19 HTML / CSS
使用canvas绘制超炫时钟
2014/12/17 HTML / CSS
护士岗位职责
2014/02/16 职场文书
彩色的非洲教学反思
2014/02/18 职场文书
学生请假条
2014/04/11 职场文书
艺术设计专业求职自荐信
2014/05/19 职场文书
2015年综治宣传月活动总结
2015/03/25 职场文书
大学开学典礼新闻稿
2015/07/17 职场文书
2015年民兵整组工作总结
2015/07/24 职场文书
vue3不同环境下实现配置代理
2022/05/25 Vue.js