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 相关文章推荐
web.py获取上传文件名的正确方法
Aug 26 Python
python获取指定时间差的时间实例详解
Apr 11 Python
python3.6 实现AES加密的示例(pyCryptodome)
Jan 10 Python
python解决pandas处理缺失值为空字符串的问题
Apr 08 Python
python Tkinter的图片刷新实例
Jun 14 Python
Pycharm配置PyQt5环境的教程
Apr 02 Python
Django serializer优化类视图的实现示例
Jul 16 Python
python多线程semaphore实现线程数控制的示例
Aug 10 Python
Pycharm 解决自动格式化冲突的设置操作
Jan 15 Python
解决pycharm 格式报错tabs和space不一致问题
Feb 26 Python
Python列表删除重复元素与图像相似度判断及删除实例代码
May 07 Python
Python数据可视化之基于pyecharts实现的地理图表的绘制
Jun 10 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
PHP4(windows版本)中的COM函数
2006/10/09 PHP
php动态生成JavaScript代码
2009/03/09 PHP
PHP字符串的编码问题的详细介绍
2013/04/27 PHP
php json_encode值中大括号与花括号区别
2013/09/30 PHP
PHP函数microtime()用法与说明
2013/12/04 PHP
php使用curl和正则表达式抓取网页数据示例
2014/04/13 PHP
ThinkPHP 404页面的设置方法
2015/01/14 PHP
php大小写转换函数(strtolower、strtoupper)用法介绍
2017/11/17 PHP
快速解决PHP调用Word组件DCOM权限的问题
2017/12/27 PHP
PHP+Ajax实现的博客文章添加类别功能示例
2018/03/29 PHP
6个常见的 PHP 安全性攻击实例和阻止方法
2020/12/16 PHP
在Javascript中为String对象添加trim,ltrim,rtrim方法
2006/09/22 Javascript
CLASS_CONFUSION JS混淆 全源码
2007/12/12 Javascript
JavaScipt基本教程之JavaScript语言的基础
2008/01/16 Javascript
js实现网页随机切换背景图片的方法
2014/11/01 Javascript
js实现贪吃蛇小游戏(容易理解)
2017/01/22 Javascript
BOM之navigator对象和用户代理检测
2017/02/10 Javascript
js实现年月日表单三级联动
2020/04/17 Javascript
原生JS实现图片无缝滚动方法(附带封装的运动框架)
2017/10/01 Javascript
深入理解Vue官方文档梳理之全局API
2017/11/22 Javascript
Easyui 关闭jquery-easui tab标签页前触发事件的解决方法
2019/04/28 jQuery
vue + elementUI实现省市县三级联动的方法示例
2019/10/29 Javascript
python中while循环语句用法简单实例
2015/05/07 Python
关于python中密码加盐的学习体会小结
2019/07/15 Python
keras 指定程序在某块卡上训练实例
2020/06/22 Python
python复合条件下的字典排序
2020/12/18 Python
python中time包实例详解
2021/02/02 Python
机械个人求职信范文
2014/01/24 职场文书
抵押贷款承诺书
2014/05/30 职场文书
2015年科室工作总结
2015/04/10 职场文书
幼儿园食品安全责任书
2015/05/08 职场文书
大学毕业晚会开场白
2015/05/29 职场文书
餐厅如何利用“营销策略”扭转亏本局面
2019/10/15 职场文书
导游词之南京中山陵
2019/11/27 职场文书
导游词之绍兴柯岩古镇
2020/01/09 职场文书
mysql查询的控制语句图文详解
2021/04/11 MySQL