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实现按任意键继续执行程序
Dec 30 Python
python生成二维码的实例详解
Oct 29 Python
浅谈django orm 优化
Aug 18 Python
python3去掉string中的标点符号方法
Jan 22 Python
使用Django开发简单接口实现文章增删改查
May 09 Python
python matplotlib库绘制条形图练习题
Aug 10 Python
python自动化测试无法启动谷歌浏览器问题
Oct 10 Python
python实现低通滤波器代码
Feb 26 Python
浅谈keras.callbacks设置模型保存策略
Jun 18 Python
Python实现列表索引批量删除的5种方法
Nov 16 Python
python 基于PYMYSQL使用MYSQL数据库
Dec 24 Python
Python+Selenium自动化环境搭建与操作基础详解
Mar 13 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+MySQL的聊天室设计
2006/10/09 PHP
dedecms模版制作使用方法
2007/04/03 PHP
php教程之魔术方法的使用示例(php魔术函数)
2014/02/12 PHP
Windows7下的php环境配置教程
2015/02/28 PHP
php清除和销毁session的方法分析
2015/03/19 PHP
深入php内核之php in array
2015/11/10 PHP
PHP简单实现遍历目录下特定文件的方法小结
2017/05/22 PHP
Thinkphp 3.2框架使用Redis的方法详解
2019/10/24 PHP
深入聊聊Array的sort方法的使用技巧.详细点评protype.js中的sortBy方法
2007/04/12 Javascript
javascript中的undefined 与 null 的区别  补充篇
2010/03/17 Javascript
Jquery跨域获得Json时invalid label错误的解决办法
2011/01/11 Javascript
从零开始学习jQuery (六) jquery中的AJAX使用
2011/02/23 Javascript
28个常用JavaScript方法集锦
2015/01/14 Javascript
JavaScript中setUTCFullYear()方法的使用简介
2015/06/12 Javascript
jQuery Jsonp跨域模拟搜索引擎
2017/06/17 jQuery
详解webpack进阶之插件篇
2017/07/06 Javascript
简述ES6新增关键字let与var的区别
2019/08/23 Javascript
javascript设计模式 ? 享元模式原理与用法实例分析
2020/04/15 Javascript
JS图片懒加载技术实现过程解析
2020/07/27 Javascript
解决await在forEach中不起作用的问题
2021/02/25 Javascript
python中循环语句while用法实例
2015/05/16 Python
python制作websocket服务器实例分享
2016/11/20 Python
Python读取mat文件,并保存为pickle格式的方法
2018/10/23 Python
python中time库的实例使用方法
2019/10/31 Python
基于Python中的yield表达式介绍
2019/11/19 Python
python实现百度OCR图片识别过程解析
2020/01/17 Python
Python3使用腾讯云文字识别(腾讯OCR)提取图片中的文字内容实例详解
2020/02/18 Python
Python 爬虫的原理
2020/07/30 Python
HTML5 Canvas 旋转风车绘制
2017/08/18 HTML / CSS
boostrap modal 闪现问题的解决方法
2020/09/01 HTML / CSS
晨会主持词
2014/03/17 职场文书
乡镇消防工作实施方案
2014/03/27 职场文书
校园绿化美化方案
2014/06/08 职场文书
委托书范本
2014/09/13 职场文书
六查六看自检自查剖析材料
2014/10/14 职场文书
Redis分布式锁的7种实现
2022/04/01 Redis