email.parser.
Parser()的parsestr()和parse()方法都可以用来从原始邮件文件中提取邮件头信息。这两个方法的区别就parsestr处理的是字符串对象,parse处理的是文件对象。
让我们通过两个例子来了解这两个方法的使用。先来看一封邮件的原始信息的一部分:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
cat / tmp / email_test1.txt
date: Wed, 16 Nov 2016 16 : 04 : 44 + 0800
From: 3456789 < 3456789 @qq.com>
To: 1234567 < 1234567 @qq.com>
Cc: 23456780 < 23456780 @qq.com>
Reply - To: 3456789 < 3456789 @qq.com>
Subject: email test! X - Priority: 3
X - Has - Attach: no
X - Mailer: Foxmail 7.0 . 1.91 [cn]
Mime - Version: 1.0
Message - ID : < 201611161604440653250 @qq.com>
Content - Type : multipart / alternative;
boundary = "----=_001_NextPart245273401224_=----"
|
例1:通过parsestr提取邮件头
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
|
#!/usr/bin/python import os
from email.parser import Parser
def read_mail(path):
if os.path.exists(path):
with open (path) as fp:
email = fp.read()
return email
else :
print "file not exist!" raw_email = read_mail( '/tmp/email_test1.txt' ) #将邮件读到一个字符串里面
headers = Parser().parsestr(raw_email) #经过parsestr处理过后生成一个字典
print 'Cc: %s' % headers[ 'Cc' ]
print 'To: %s' % headers[ 'to' ]
print 'From: %s' % headers[ 'from' ]
print 'Subject: %s' % headers[ 'subject' ]
|
例2:通过parse提取邮件关
1
2
3
4
5
6
7
8
9
|
#!/usr/bin/python from email.parser import Parser
headers = Parser().parse( open ( '/tmp/email_test1.txt' , 'r' ))
print 'Cc: %s' % headers[ 'Cc' ]
print 'To: %s' % headers[ 'to' ]
print 'From: %s' % headers[ 'from' ]
print 'Subject: %s' % headers[ 'subject' ]
|
两个例子的返回的结果都是一样的:
1
2
3
4
|
Cc: 23456780 < 23456780 @qq.com>
To: 1234567 < 1234567 @qq.com>
From: 3456789 < 3456789 @qq.com>
Subject: email test! |
这样我们就完成了邮件头部信息的提取!
本文转自 emma_cql 51CTO博客,原文链接:http://blog.51cto.com/chenql/1873770