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格式化字符串实例总结
Sep 28 Python
Python第三方库xlrd/xlwt的安装与读写Excel表格
Jan 21 Python
Python简单的制作图片验证码实例
May 31 Python
Python subprocess模块详细解读
Jan 29 Python
python使用mitmproxy抓取浏览器请求的方法
Jul 02 Python
对python中的float除法和整除法的实例详解
Jul 20 Python
Python调用Windows API函数编写录音机和音乐播放器功能
Jan 05 Python
Python作用域与名字空间原理详解
Mar 21 Python
使用Python实现批量ping操作方法
May 06 Python
Scrapy中如何向Spider传入参数的方法实现
Sep 28 Python
解决import tensorflow导致jupyter内核死亡的问题
Feb 06 Python
Python3爬虫RedisDump的安装步骤
Feb 20 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
支持oicq头像的留言簿(二)
2006/10/09 PHP
PHP实现异步调用方法研究与分享
2011/10/27 PHP
PHP模板引擎Smarty的缓存使用总结
2014/04/24 PHP
PHP微信网页授权的配置文件操作分析
2019/05/29 PHP
js过滤数组重复元素的方法
2010/09/05 Javascript
Javascript技巧之不要用for in语句对数组进行遍历
2010/10/20 Javascript
网页加载时页面显示进度条加载完成之后显示网页内容
2012/12/23 Javascript
js 实现菜单左右滚动显示示例介绍
2013/11/21 Javascript
浅谈javascript对象模型和function对象
2014/12/26 Javascript
通过JS判断联网类型和连接状态的实现代码
2015/04/01 Javascript
jquery中表单 多选框的一种巧妙写法
2015/09/06 Javascript
BootStrap制作导航条实例代码
2016/05/06 Javascript
JS组件Bootstrap Table布局详解
2016/05/27 Javascript
修改ligerui 默认确认按钮的方法
2016/12/27 Javascript
Bootstrap笔记之缩略图、警告框实例详解
2017/03/09 Javascript
JS实现图片预加载之无序预加载功能代码
2017/05/12 Javascript
jQuery+CSS实现的table表格行列转置功能示例
2018/01/08 jQuery
JS复杂判断的更优雅写法代码详解
2018/11/07 Javascript
mock.js实现模拟生成假数据功能示例
2019/01/15 Javascript
Vue全局loading及错误提示的思路与实现
2019/08/09 Javascript
[01:08:09]DOTA2上海特级锦标赛主赛事日 - 1 胜者组第一轮#1Liquid VS Alliance第二局
2016/03/02 DOTA
Python标准库之循环器(itertools)介绍
2014/11/25 Python
Python实现遍历windows所有窗口并输出窗口标题的方法
2015/03/13 Python
python实现的简单猜数字游戏
2015/04/04 Python
Python中使用OpenCV库来进行简单的气象学遥感影像计算
2016/02/19 Python
在linux系统下安装python librtmp包的实现方法
2019/07/22 Python
Django框架之DRF 基于mixins来封装的视图详解
2019/07/23 Python
详解使用django-mama-cas快速搭建CAS服务的实现
2019/10/30 Python
基于python中__add__函数的用法
2019/11/25 Python
解决pytorch 保存模型遇到的问题
2021/03/03 Python
CSS3中动画属性transform、transition和animation属性的区别
2016/09/25 HTML / CSS
CSS3 不定高宽垂直水平居中的几种方式
2020/03/26 HTML / CSS
英国手工制作的现代与经典的沙发和床:Love Your Home
2020/09/26 全球购物
读群众路线的心得体会
2014/09/03 职场文书
信息技术国培研修日志
2015/11/13 职场文书
Windows Server 2019 安装DHCP服务及相关配置
2022/04/28 Servers