Python实现读取邮箱中的邮件功能示例【含文本及附件】

发布时间 - 2026-01-11 02:39:32    点击率:

本文实例讲述了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编程实现及时获取新邮件的方法示例  # 在Python中使用poplib模块收取邮件的教程  # 简单实现python收发邮件功能  # Python实现发送与接收邮件的方法详解  # Python获取邮件地址的方法  # 详解python实现读取邮件数据并下载附件的实例  # Python读取指定日期邮件的实例  # 进阶  # 操作技巧  # 运行环境  # 相关内容  # 数据结构  # 给大家  # 更多关于  # 所述  # 程序设计  # 使用技巧  # 编程技巧  # 讲述了  # username  # qq  # exmail  # cn  # xxxx  # encode  # decode  # utf8_to_mbs 


相关栏目: 【 网站优化151355 】 【 网络推广146373 】 【 网络技术251813 】 【 AI营销90571


相关推荐: Windows10如何更改计算机工作组_Win10系统属性修改Workgroup  php 三元运算符实例详细介绍  Laravel API资源类怎么用_Laravel API Resource数据转换  关于BootStrap modal 在IOS9中不能弹出的解决方法(IOS 9 bootstrap modal ios 9 noticework)  免费制作统计图的网站有哪些,如何看待现如今年轻人买房难的情况?  深圳网站制作培训,深圳哪些招聘网站比较好?  Laravel怎么创建控制器Controller_Laravel路由绑定与控制器逻辑编写【指南】  广州网站制作公司哪家好一点,广州欧莱雅百库网络科技有限公司官网?  敲碗10年!Mac系列传将迎来「触控与联网」双革新  如何制作一个表白网站视频,关于勇敢表白的小标题?  JavaScript如何实现音频处理_Web Audio API如何工作?  Laravel如何生成URL和重定向?(路由助手函数)  Laravel任务队列怎么用_Laravel Queues异步处理任务提升应用性能  Laravel如何实现多对多模型关联?(Eloquent教程)  Laravel模型事件有哪些_Laravel Model Event生命周期详解  网站建设保证美观性,需要考虑的几点问题!  Laravel如何实现本地化和多语言支持?(i18n教程)  用v-html解决Vue.js渲染中html标签不被解析的问题  深入理解Android中的xmlns:tools属性  Laravel怎么判断请求类型_Laravel Request isMethod用法  家族网站制作贴纸教程视频,用豆子做粘帖画怎么制作?  PHP 实现电台节目表的智能时间匹配与今日/明日轮播逻辑  如何打造高效商业网站?建站目的决定转化率  ,交易猫的商品怎么发布到网站上去?  Laravel的契約(Contracts)是什么_深入理解Laravel Contracts与依赖倒置  Laravel如何清理系统缓存命令_Laravel清除路由配置及视图缓存的方法【总结】  Laravel如何将应用部署到生产服务器_Laravel生产环境部署流程  手机钓鱼网站怎么制作视频,怎样拦截钓鱼网站。怎么办?  如何用PHP工具快速搭建高效网站?  Python面向对象测试方法_mock解析【教程】  Laravel如何处理CORS跨域问题_Laravel项目CORS配置与解决方案  如何在七牛云存储上搭建网站并设置自定义域名?  Laravel怎么实现搜索高亮功能_Laravel结合Scout与Algolia全文检索【实战】  为什么php本地部署后css不生效_静态资源加载失败修复技巧【技巧】  公司网站制作价格怎么算,公司办个官网需要多少钱?  北京的网站制作公司有哪些,哪个视频网站最好?  打开php文件提示内存不足_怎么调整php内存限制【解决方案】  Laravel项目怎么部署到Linux_Laravel Nginx配置详解  香港服务器网站搭建教程-电商部署、配置优化与安全稳定指南  Firefox Developer Edition开发者版本入口  JS实现鼠标移上去显示图片或微信二维码  简单实现Android验证码  Laravel Fortify是什么,和Jetstream有什么关系  三星网站视频制作教程下载,三星w23网页如何全屏?  移动端手机网站制作软件,掌上时代,移动端网站的谷歌SEO该如何做?  百度浏览器ai对话怎么关 百度浏览器ai聊天窗口隐藏  php结合redis实现高并发下的抢购、秒杀功能的实例  油猴 教程,油猴搜脚本为什么会网页无法显示?  Laravel怎么配置.env环境变量_Laravel生产环境敏感数据保护与读取【方法】  javascript读取文本节点方法小结