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实现从脚本里运行scrapy的方法
Apr 07 Python
Python读写ini文件的方法
May 28 Python
Python win32com 操作Exce的l简单方法(必看)
May 25 Python
Request的中断和ErrorHandler实例解析
Feb 12 Python
Python中偏函数用法示例
Jun 07 Python
简单了解python元组tuple相关原理
Dec 02 Python
django连接mysql数据库及建表操作实例详解
Dec 10 Python
Tensorflow 1.0之后模型文件、权重数值的读取方式
Feb 12 Python
浅谈keras中的Merge层(实现层的相加、相减、相乘实例)
May 23 Python
浅谈keras中loss与val_loss的关系
Jun 22 Python
python录音并调用百度语音识别接口的示例
Dec 01 Python
Python 找出英文单词列表(list)中最长单词链
Dec 14 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程序之die调试法 快速解决错误
2009/09/17 PHP
支持中文的php加密解密类代码
2011/11/27 PHP
laravel实现分页样式替换示例代码(增加首、尾页)
2017/09/22 PHP
PHP生成(支持多模板)二维码海报代码
2018/04/30 PHP
下载站控制介绍字数显示的脚本 显示全部 隐藏介绍等功能
2009/09/19 Javascript
你必须知道的Javascript知识点之"字面量和对应类型"说明介绍
2013/04/23 Javascript
判断ie的两种简单方法
2013/08/12 Javascript
ie9 提示'console' 未定义问题的解决方法
2014/03/20 Javascript
jquery mobile的触控点击事件会多次触发问题的解决方法
2014/05/08 Javascript
深入理解JavaScript系列(25):设计模式之单例模式详解
2015/03/03 Javascript
javascript模拟命名空间
2015/04/17 Javascript
jQuery固定元素插件scrolltofixed使用指南
2015/04/21 Javascript
基于jQuery实现页面搜索功能
2020/03/26 Javascript
Vue制作Todo List网页
2017/04/26 Javascript
微信小程序开发之IOS和Android兼容的问题
2017/09/26 Javascript
记一次webapck4 配置文件无效的解决历程
2018/09/19 Javascript
ng-repeat指令在迭代对象时的去重方法
2018/10/02 Javascript
解决Vue使用bus总线时,第一次路由跳转时数据没成功传递问题
2020/07/28 Javascript
Vue.js中使用Vuex实现组件数据共享案例
2020/07/31 Javascript
vue 需求 data中的数据之间的调用操作
2020/08/05 Javascript
SpringBoot在yml配置文件中配置druid的操作
2020/11/16 Javascript
Python中Collection的使用小技巧
2014/08/18 Python
python中os模块详解
2016/10/14 Python
python遍历小写英文字母的方法
2019/01/02 Python
python之当你发现QTimer不能用时的解决方法
2019/06/21 Python
如何使用python传入不确定个数参数
2020/02/18 Python
一文读懂Python 枚举
2020/08/25 Python
Django创建一个后台的基本步骤记录
2020/10/02 Python
美国最大的香水出口:FragranceX.com
2017/11/04 全球购物
理肤泉美国官网:La Roche-Posay
2018/01/17 全球购物
Merrell美国官网:美国登山运动鞋品牌
2018/02/07 全球购物
规范化管理年活动总结
2014/08/29 职场文书
2014年党员学习“三严三实”思想汇报
2014/09/15 职场文书
流动人口婚育证明范本
2014/09/26 职场文书
MySQL系列之八 MySQL服务器变量
2021/07/02 MySQL
python绘制云雨图raincloud plot
2022/08/05 Python