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 相关文章推荐
wxpython 学习笔记 第一天
Mar 16 Python
python字典基本操作实例分析
Jul 11 Python
Python装饰器基础详解
Mar 09 Python
Python运行报错UnicodeDecodeError的解决方法
Jun 07 Python
微信 用脚本查看是否被微信好友删除
Oct 28 Python
对Python中数组的几种使用方法总结
Jun 28 Python
flask框架使用orm连接数据库的方法示例
Jul 16 Python
python实现三次样条插值
Dec 17 Python
python读取Kafka实例
Dec 23 Python
python字典setdefault方法和get方法使用实例
Dec 25 Python
Python sep参数使用方法详解
Feb 12 Python
Python callable内置函数原理解析
Mar 05 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
一个简单的自动发送邮件系统(三)
2006/10/09 PHP
如何写php程序?
2006/12/08 PHP
dedecms系统的广告设置代码 基础版本
2010/04/09 PHP
php 格式化数字的时候注意数字的范围
2010/04/13 PHP
PHP 5.5 创建和验证哈希最简单的方法详解
2013/11/07 PHP
yii用户注册表单验证实例
2015/12/26 PHP
PHP简单获取多个checkbox值的方法
2016/06/13 PHP
PHP AjaxForm提交图片上传并显示图片源码
2016/11/29 PHP
return false,对阻止事件默认动作的一些测试代码
2010/11/17 Javascript
jQuery根据ID获取input、checkbox、radio、select的示例
2014/08/11 Javascript
js获取内联样式的方法
2015/01/27 Javascript
Node.js实现Excel转JSON
2015/04/24 Javascript
Bootstrap的fileinput插件实现多文件上传的方法
2016/09/05 Javascript
Bootstrap Modal遮罩弹出层(完整版)
2016/11/21 Javascript
JavaScript ES6中CLASS的使用详解
2016/11/22 Javascript
基于JavaScript实现瀑布流布局
2018/08/15 Javascript
NodeJS 文件夹拷贝以及删除功能
2019/09/03 NodeJs
浅谈Vue为什么不能检测数组变动
2019/10/14 Javascript
vue 微信扫码登录(自定义样式)
2020/01/06 Javascript
Vue+Bootstrap收藏(点赞)功能逻辑与具体实现
2020/10/22 Javascript
python分布式环境下的限流器的示例
2017/10/26 Python
Python内置函数reversed()用法分析
2018/03/20 Python
python实现网页自动签到功能
2019/01/21 Python
Python 互换字典的键值对实例
2019/02/12 Python
Python切片操作去除字符串首尾的空格
2019/04/22 Python
Ubuntu18.04下python版本完美切换的解决方法
2019/06/14 Python
python thrift 实现 单端口多服务的过程
2020/06/08 Python
Python中Selenium模块的使用详解
2020/10/09 Python
Python urllib3软件包的使用说明
2020/11/18 Python
使用CSS3编写类似iOS中的复选框及带开关的按钮
2016/04/11 HTML / CSS
美国高档帽子网上商店:Hats.com
2018/08/09 全球购物
学校交通安全责任书
2014/08/25 职场文书
九一八事变纪念日演讲稿
2014/09/14 职场文书
2014年生产部工作总结
2014/12/17 职场文书
订货会主持词
2015/07/01 职场文书
《最后一头战象》读后感:动物也有感情
2020/01/02 职场文书