python常用模块email----从原始邮件中提取邮件头信息

简介:

  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


相关文章
|
9天前
|
Python
在Python中,可以使用内置的`re`模块来处理正则表达式
在Python中,可以使用内置的`re`模块来处理正则表达式
21 5
|
19天前
|
存储 数据采集 数据库
用 Python 爬取淘宝商品价格信息时需要注意什么?
使用 Python 爬取淘宝商品价格信息时,需注意法律和道德规范,遵守法律法规和平台规定,避免非法用途。技术上,可选择 Selenium 和 Requests 库,处理反爬措施如 IP 限制、验证码识别和请求频率控制。解析页面数据时,确定数据位置并清洗格式。数据存储可选择 CSV、Excel、JSON 或数据库,定期更新并去重。还需进行错误处理和日志记录,确保爬虫稳定运行。
|
19天前
|
Java 程序员 开发者
Python的gc模块
Python的gc模块
|
19天前
|
数据采集 Web App开发 iOS开发
如何利用 Python 的爬虫技术获取淘宝天猫商品的价格信息?
本文介绍了使用 Python 爬虫技术获取淘宝天猫商品价格信息的两种方法。方法一使用 Selenium 模拟浏览器操作,通过定位页面元素获取价格;方法二使用 Requests 和正则表达式直接请求页面内容并提取价格。每种方法都有详细步骤和代码示例,但需注意反爬措施和法律法规。
|
22天前
|
缓存 监控 Linux
Python 实时获取Linux服务器信息
Python 实时获取Linux服务器信息
|
21天前
|
Python
SciPy 教程 之 SciPy 模块列表 16
SciPy教程之SciPy模块列表16 - 单位类型。常量模块包含多种单位,如公制、质量、角度、时间、长度、压强、体积、速度、温度、能量、功率和力学单位。示例代码展示了力学单位的使用,如牛顿、磅力和千克力等。
16 0
|
22天前
|
JavaScript Python
SciPy 教程 之 SciPy 模块列表 15
SciPy 教程之 SciPy 模块列表 15 - 功率单位。常量模块包含多种单位,如公制、质量、时间等。功率单位中,1 瓦特定义为 1 焦耳/秒,表示每秒转换或耗散的能量速率。示例代码展示了如何使用 `constants` 模块获取马力值(745.6998715822701)。
15 0
|
22天前
|
JavaScript Python
SciPy 教程 之 SciPy 模块列表 15
SciPy教程之SciPy模块列表15:单位类型。常量模块包含多种单位,如公制、质量、角度、时间、长度、压强、体积、速度、温度、能量、功率和力学单位。功率单位以瓦特(W)表示,1W=1J/s。示例代码展示了如何使用`constants`模块获取马力(hp)的值,结果为745.6998715822701。
16 0
|
6月前
|
Python 人工智能 数据可视化
Python模块与包(八)
Python模块与包(八)
50 0
Python模块与包(八)
|
2月前
|
人工智能 数据可视化 搜索推荐
Python异常模块与包
Python异常模块与包