设为首页 收藏本站
查看: 3075|回复: 0

[经验分享] python开发_email_读取邮件头信息

[复制链接]
累计签到:1 天
连续签到:1 天
发表于 2015-4-26 11:31:07 | 显示全部楼层 |阅读模式
  在python中的类库中,python自带了email模块。
  在email模块中,我们可以email类库实现对邮件的读取,和邮件的发送等功能。
  本文先来谈谈在python中,利用email模块读取邮件头.....
  先来看看一封百度云发给我的邮件:
DSC0000.png
  下面是邮件的具体信息:



Date: Tue, 30 Jul 2013 16:53:17 +0800
Received: from db-sysnoc-mailrelay3.db01.baidu (unknown [123.125.66.194])
by newmx38.qq.com (NewMx) with SMTP id
for ; Tue, 30 Jul 2013 16:53:16 +0800
X-QQ-SSF: 00500000010000010rF000C1040000r
X-QQ-mid: mx38t1375174396thkz17254
Received: from mail-out.sys.baidu.com (cq01-passport-mis00.cq01.baidu.com [10.46.78.11])
by db-sysnoc-mailrelay3.db01.baidu.com (Postfix) with SMTP id 515EF798060
for ; Tue, 30 Jul 2013 16:53:16 +0800 (CST)
From: =?UTF-8?B?YmFpZHU=?=
To: =?UTF-8?B?aG9uZ3RlbnpvbmVAZm94bWFpbC5jb20=?=
Subject: =?UTF-8?B?55m+5bqm5LqR6YCB5L2gMTAwR+WtmOWCqOepuumXtOmAmuefpQ==?=
MIME-Version: 1.0
Content-Type: text/html;
charset="UTF-8"
Content-Transfer-Encoding: base64
PFA+PEEgaHJlZj0iaHR0cDovL3l1bi5iYWlkdS5jb20vMTAwPz1tYWlsMiI+PElNRyBzdHlsZT0i
RElTUExBWTogYmxvY2s7IE1BUkdJTi1MRUZUOiBhdXRvOyBNQVJHSU4tUklHSFQ6IGF1dG8iIHNy
Yz0iaHR0cDovL3Bhbi5iYWlkdS5jb20vcmVzL3N0YXRpYy9pbWFnZXMvY21zL3dvcmxkLTEwMC5q
cGciPjwvQT48Rk9OVCBmYWNlPeW5vOWchj48Rk9OVCBjb2xvcj0jZmYwMDAwIHNpemU9Mz48Rk9O
VCBjb2xvcj0jMDAwMDAwPkhvbmdfdGVuX3pvbmXvvIzmgqjnmoTnmb7luqbkupHlrrnph488Rk9O
VCBjb2xvcj0jZmYwMDAwPjxTVFJPTkc+5Y2z5bCG5Yiw5pyfPC9TVFJPTkc+PC9GT05UPu+8jOiv
t+WwveW/q+e7reacn++8jOS7peWFjeW9seWTjeaCqOWkh+S7veWunei0teaVsOaNruOAgjxTVFJP
Tkc+PEZPTlQgY29sb3I9I2ZmMDAwMD4xMDBH57ut5pyf5Y+q6ZyAMC4y5YWD77yM5Y+y5LiK5pyA
5L2O5Lu3PC9GT05UPjwvU1RST05HPu+8jOa0u+WKqOWcsOWdgO+8mjwvRk9OVD48L0ZPTlQ+PEZP
TlQgY29sb3I9I2ZmMDAwMCBzaXplPTM+PEEgaHJlZj0iaHR0cDovL3l1bi5iYWlkdS5jb20vMTAw
Pz1tYWlsMiI+aHR0cDovL3l1bi5iYWlkdS5jb20vMTAwPC9BPjwvQT48L0ZPTlQ+PC9GT05UPjxG
T05UIHNpemU9Mz48Rk9OVCBjb2xvcj0jZmYwMDAwPiA8L0ZPTlQ+PC9GT05UPjwvUD4NPGJyPjxQ
PjxGT05UIHNpemU9Mj48Rk9OVCBzdHlsZT0iQkFDS0dST1VORC1DT0xPUjogI2ZmZmYwMCIgY29s
b3I9I2ZmMDAwMCBmYWNlPeWui+S9kz7vvIjmnKzkvJjmg6Dnu63mnJ/kuLrmgqjkuJPkuqvnibnm
nYPvvIzor7fli7/ovazlj5HjgIHlpJbms4TvvIzosKLosKLmlK/mjIHvvIHvvIk8L0ZPTlQ+PC9G
T05UPjwvUD4=

  下面是我做的demo:
  运行效果:
DSC0001.png
  ===========================================
  代码部分:
  ===========================================



  1 #python mail
  2
  3 import os
  4 import email
  5
  6 #邮件文件的存放位置
  7 PATH = ''
  8
  9 #读取文件
10 def read_mail(path):
11     if os.path.exists(path):
12         with open(path) as fp:
13             for line in fp:
14                 print(line)
15     else:
16         not_find_file()
17
18 #打开一个文件   
19 def open_file(path):
20     if os.path.exists(path):
21         return open(path, 'r')
22     else:
23         not_find_file()
24
25 #创建消息对象
26 def get_message(path):
27     if os.path.exists(path):
28         fp = open_file(path)
29         return email.message_from_file(fp)
30     else:
31        not_find_file()
32
33 #获取subject对象
34 def get_subject(path):
35     if os.path.exists(path):
36         message = get_message(path)
37         return message.get('subject')
38     else:
39         not_find_file()
40
41 #解析subject对象
42 def parse_subject(msg):
43     if msg != None:
44         subject = msg.get('subject')
45         #header = email.Header.Header(subject)
46         #decode_h = email.Header.decode_header(header)
47         #return decode_h[0][0]
48     else:
49         empty_obj()
50
51 #获取发件人邮箱   
52 def get_from(msg):
53     if msg != None:
54         return email.utils.parseaddr(msg.get("from"))[1]
55     else:
56         empty_obj()
57
58 #获取收件人邮箱
59 def get_to(msg):
60     if msg != None:
61         return email.utils.parseaddr(msg.get('to'))[1]
62     else:
63         empty_obj()
64
65
66 #获取邮件的生成时间
67 def get_date(msg):
68     if msg != None:
69         return email.utils.parseaddr(msg.get('date'))[1]
70     else:
71         empty_obj()
72
73 #获取邮件的生成版本
74 def get_mime_version(msg):
75     if msg != None:
76         return email.utils.parseaddr(msg.get('mime-version'))[1]
77     else:
78         empty_obj()
79
80 #获取邮件的文本类型
81 def get_content_type(msg):
82     if msg != None:
83         return email.utils.parseaddr(msg.get('content-type'))[1]
84     else:
85         empty_obj()
86
87 #获取邮件的邮件的id
88 def get_message_id(msg):
89     if msg != None:
90         return email.utils.parseaddr(msg.get('message-id'))[1]
91     else:
92         empty_obj()
93
94
95 #文件不存在
96 def not_find_file():
97     print('文件不存在!')
98
99 #msg is empty
100 def empty_obj():
101     print('msg is empty!')
102     
103 def main():
104     global PATH
105     PATH = 'E:\\test_mail.eml'
106     print(PATH)
107     msg = get_message(PATH)
108     #print(msg)
109     print('#' * 50)
110     print('subject:{}'.format(get_subject(PATH)))
111     print('#' * 50)
112     print(parse_subject(msg))
113     print('#' * 50)
114     print('from:{}'.format(get_from(msg)))
115     print('to:{}'.format(get_to(msg)))
116     print('date:{}'.format(get_date(msg)))
117     print('mime-version:{}'.format(get_mime_version(msg)))
118     print('content-type:{}'.format(get_content_type(msg)))
119     print('message-id:{}'.format(get_message_id(msg)))
120
121 if __name__ == '__main__':
122     main()
123     
  

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-60848-1-1.html 上篇帖子: Python开发工具:Wing IDE (含详细注册过程) 下篇帖子: Python简介[转]
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表