专栏首页python3python 解析 eml文件

python 解析 eml文件

 #-*- encoding: gb2312 -*-
import email


fp = open('xxxx.eml', "r")
msg = email.message_from_file(fp)


# 循环信件中的每一个mime的数据块
for par in msg.walk():
if not par.is_multipart(): # 这里要判断是否是multipart,是的话,里面的数据是无用的,至于为什么可以了解mime相关知识。
name = par.get_param("name") #如果是附件,这里就会取出附件的文件名
if name:
#有附件
# 下面的三行代码只是为了解码象=?gbk?Q?=CF=E0=C6=AC.rar?=这样的文件名
h = email.Header.Header(name)
dh = email.Header.decode_header(h)
fname = dh[0][0]
print '附件名:', fname
data = par.get_payload(decode=True) # 解码出附件数据,然后存储到文件中

try:
f = open(fname, 'wb') #注意一定要用wb来打开文件,因为附件一般都是二进制文件
except:
print '附件名有非法字符,自动换一个'
f = open('aaaa', 'wb')
f.write(data)
f.close()
else:
#不是附件,是文本内容
print par.get_payload(decode=True) # 解码出文本内容,直接输出来就可以了。

print '+'*60 # 用来区别各个部分的输出                           

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • day15-python之变量和递归

    py3study
  • python用户输入(三)

    name = "Li QW" #定义变量 fname = name  #fname等于name变量产生的值 print("My name is " , name...

    py3study
  • 文件操作练习.

    py3study
  • ubuntu环境下安装与简单实践MySQL(一)

    本文通过两个微型项目,从安装到实践介绍ubuntu下MySQL的简单操作,话不多说直接上代码:

    用户5473628
  • python_类装饰器

    一.定义 装饰器就是一个给对象添加额外功能的函数,其本质是函数。它的基本构造:高阶函数+函数嵌套+闭包。 二.简单类的装饰器 我们先看简单的类的装饰器,如果我们...

    py3study
  • 程序猿都没对象,JS竟然有对象?

      现在做项目基本是套用框架,不论是网上的前端还是后端框架,也会寻找一些封装好的插件拿来即用,但还是希望拿来时最好自己过后再回过头了解里面的原理,学习里面优秀的...

    欢醉
  • 海量数据迁移之分区并行抽取(r2笔记53天)

    在之前的章节中分享过一些数据迁移中并行抽取的细节,比如一个表T 很大,有500G的数据,如果开启并行抽取,默认数据库中并行的最大值为64,那么生成的dump文件...

    jeanron100
  • servlet乱码问题总结

    在学习时servlet乱码问题还是挺严重的,总结一下有三种情况  1.新建HTML页面后浏览出现乱码 2.以post形式请求时出现乱码 3.以get形式请求时出...

    lpxxn
  • 论文阅读理解 - Human Attribute Recognition by Deep Hierarchical Contexts

    训练CNN网络,以从所有检测部位中选取最具描述属性的人体部分;并结合整体人体作为归一化的姿态深度表示.

    AIHGF
  • 图论碎碎念(1)

    Hello,大家好~~~这一期是图论碎碎念系列的第一篇推送。图论是一个范围非常广的理论。很多最优化的问题如排队论,存储论都可以抽象成图论问题来解决。再比如说现在...

    艾木樨

扫码关注云+社区

领取腾讯云代金券