用Python处理邮件
- 博客分类:
- 技术杂绘
用Python处理邮件
2011年07月20日
A.title1:link {font-size:17.9px;font-family:arial;font-weight:bold;text-decoration:none;color:#ffffff;}A.title1:visited {font-size:17.9px;font-family:arial;font-weight:bold;text-decoration:none;color:#ffffff;}A.title1:active {font-size:17.9px;font-family:arial;font-weight:bold;text-decoration:none;color:#ffffff;}A.title1:hover {font-size:17.9px;font-family:arial;font-weight:bold;text-decoration:none;color:#ffffff;}A.title2:link {text-decoration:none;color:#000000;font-size:12px}A.title2:visited {text-decoration:none;color:#000000;font-size:12px}A.title2:active {text-decoration:none;color:#ff0000;font-size:12px}A.title2:hover {text-decoration:none;color:#ff0000;font-size:12px}
ChinaUnix.net首页 | 论坛 | 博客 | Linux | 人才 | 培训 | 精华 | Wiki | 读书 | 资料 | 手册 | 下载 | 搜索
ChinaUnix首页 > 精华文章 > Python > 正文
总体来说python处理邮件还是比较方便的,库提供了很多工具.下面我把心得写出来,给新手一个启迪,也请高手给些更好的方法.
先说接受邮件. poplib 方法.
1.poplib.POP3('这里填入你pop邮件服务器地址') 登陆服务器.
2.poplib.user('用户名 ') poplib.pass_('密码')
3.poplib.stat()方法返回一个元组:(邮件数,邮件尺寸)
mailCount,size=poplib.stat()
这样mailCount就是邮件的数量,size,就是所有邮件的大小.
3.poplib.rert('邮件号码')方法返回一个元组:(状态信息,邮件,邮件尺寸)
hdr,message,octet=server.retr(1) 读去第一个邮件信息.
hdr的内容就是响应信息和邮件大小比如'+OK 12498 octets'
message 是包含邮件所有行的列表.
octet 是这个邮件的内容.
得到的message是邮件的原始内容,也就是没有解码过的,里面的内容和标题基本上都是base64编码的,下面说说如何处理原始邮件.
python 的email库里提供了很多处理邮件的方法,我们先把原始邮件转成email实例,这样就可以用库方法处理邮件.
email.message_from_string() 这个方法能把String的邮件转换成email.message实例.
比如我们上面的message,向下面这样调用.
mail=email.message_from_string(string.join(message,'\n'))
这样我们就生成了一个email.Message实例
现在我们来提取邮件内容,和标题,mail支持字典操作.比如下面的操作.
mail['subject'] ,mail.get('subject')
mail['To'],mail.get('to')'
mail.keys() ,mail.items() 等等.
中文邮件的标题和内容都是base64编码的.解码可以使用email.Header 里的decode_header()方法.
比如 print mail['subject'] 显示的都未处理的编码.
'=?GB2312?B?UmU6IFtweXRob24tY2hpbmVzZV0g?=\n\t=?GB2312?B?y63E3LDvztLV0tbQzsS1xFBZVEhPTrP10afRp8+wtcTXysHP?='
email.Header.decode_header(mail['subject']) 下面是解码后的信息.
[('Re: [python-chinese] \xcb\xad\xc4\xdc\xb0\xef\xce\xd2\xd5\xd2\xd6\xd0\xce\xc4\xb5\xc4PYTHON\xb3\xf5\xd1\xa7\xd1\xa7\xcf\xb0\xb5\xc4\xd7\xca\xc1\xcf', 'gb2312')]
返回的是一个列表,里面的内容保存在一个元组里,(解码后的字串,字符编码)
显示解码后的标题就象下面这样
print email.Header.decode_header(mail['subject'])[0][0]
Re: [python-chinese] 谁能帮我找中文的PYTHON初学学习的资料
上面的mail标题编码是'gb2312'的,在我的winxp机器上可以直接显示,如果编码是别的比如'utf-8'编码,那么显示出来的就是乱码了.所以我们需要使用unicode()方法,unicode('这里是string','这里是编码,比如UTF-8'),比如
subject=email.Header.decode_header(mail['subject'])[0][0]
subcode=email.Header.decode_header(mail['subject'])[0][1])
print unicode(subject,subcode)
Re: [python-chinese] 谁能帮我找中文的PYTHON初学学习的资料
下面看如何处理邮件内容.
mail里有很多方法,熟悉这些方法处理邮件就很容易了。
get_payload() 这个方法可以把邮件的内容解码并且显示出来.第一个可选择参数是mail实例,第二个参数是decode='编码' ,一般都是,'base64'编码
is_multipart(),这个方法返回boolean值,如果实例包括多段,就返回True,
print mail.is_multipart()
true ,这说明这个mail邮件包含多个字段。我下面的函数就可以处理,显示邮件的全部内容。
def showmessage(mail):
if mail.is_multipart():
for part in mail.get_payload():
showmessage(part)
else:
type=mail.get_content_charset()
if type==None:
print mail.get_payload()
else:
try:
print unicode(mail.get_payload('base64'),type)
except UnicodeDecodeError:
print mail
最后,有点要说明,如果邮件里的中文用mail.Header.decode_header()方法,和unicode()方法都不能正常显示,那么说明这个中文无法处理了,显示出来就是乱码.比如:看看看见,最终处理完成后,还是乱麻。
>;>;>;mail.get('subject')
'Re: [python-chinese] =?UTF-8?B?wrnDmMOTw5p4bWzCscOgw4LDq8K1w4TDjg==?=\n\t=?UTF-8?B?w4rDjMOi?='
>;>;>;decode_header( mail.get('subject'))
[('Re: [python-chinese]', None), ('\xc2\xb9\xc3\x98\xc3\x93\xc3\x9axml\xc2\xb1\xc3\xa0\xc3\x82\xc3\xab\xc2\xb5\xc3\x84\xc3\x8e\xc3\x8a\xc3\x8c\xc3\xa2', 'utf-8')]
>;>;>;print decode_header( mail.get('subject'))[1][0]
鹿
发表评论
-
busybox 详解(一篇讲busybox很详细的文章)
2012-01-20 12:19 769busybox 详解(一篇讲busybox ... -
so库的性能注意事项
2012-01-20 12:18 823so库的性能注意事项 2010年09月07日 一个共享库 ... -
Sql server 日记 (孤立用户)
2012-01-20 12:18 766Sql server 日记 (孤立用户) 2010年07月2 ... -
Python 数据库接口模块
2012-01-19 17:00 960Python 数据库接口模块 2 ... -
Python 3.2.2 RC1发布
2012-01-19 17:00 746Python 3.2.2 RC1发布 2011年08月16日 ... -
Python 与 C++ 的交互编程
2012-01-19 17:00 1091Python 与 C++ 的交互编程 2011年03月28日 ... -
python教程入门《3》
2012-01-19 17:00 738python教程入门《3》 2011年02月13日 第六 ... -
social game 前端思考
2012-01-17 06:45 709social game 前端思考 2011 ... -
Flash&Flex大全
2012-01-17 06:45 622Flash&Flex大全 2011年02月24日 ... -
笑到肚子疼
2012-01-17 06:44 465笑到肚子疼 2011年11月02日 1 -
剪色坊北京直营店(呼市)--死人的一次烫发经历----剪色坊北京直营店(呼市)
2012-01-17 06:44 681剪色坊北京直营店(呼市)--死人的一次烫发经历----剪色坊北 ... -
QT--QSocketNotifier类介绍
2012-01-16 05:34 976QT--QSocketNotifier类介绍 2011年12 ... -
00000000000000000
2012-01-16 05:34 72000000000000000000 2012年01月06日 ... -
IPhone 开发经验教训总结 -- 仅供参考
2012-01-16 05:34 635IPhone 开发经验教训总结 ... -
valgrind结果查看
2012-01-16 05:34 500valgrind结果查看 2011年12月30日 程序示 ... -
IP组播技术综述二
2012-01-16 05:34 649IP组播技术综述二 2011 ...
相关推荐
Python实现邮箱(以QQ邮箱为例)自动化处理,包括自动发送、读取、删除、定时发送等等 目录 1 模块介绍与安装 2 利用Python发送邮件 2.1 发送一封简单的电子邮件 2.2 发送含HTML样式的电子邮件 2.3 发送带附件的...
仅支持imap4,邮件的下载,根据时间建立文件夹,将正文和附件分开。另外有的邮箱如163使用的不规范的imap无法正常处理
通过Python语言实现邮件收发.pdf
《Python自然语言处理(影印版)》提供了非常易学的自然语言处理入门介绍,该领域涵盖从文本和电子邮件预测过滤,到自动总结和翻译等多种语言处理技术。在《Python自然语言处理(影印版)》中,你将学会编写Python程序...
本书提供了非常易学的自然语言处理入门介绍,该领域涵盖从文本和电子邮件预测过滤,到自动总结和翻译等多种语言处理技术。在本书中,你将学会编写Python程序处理大量非结构化文本。你还将通过使用综合语言数据结构...
xxx@FDK24 邮件处理模块 [main] $ tree . ├── ReadMe.txt ├── 发送邮件 │ ├── 发送带附件的邮件 │ │ ├── dailylog.txt │ │ └── sendemailattach.py │ └── 发送普通邮件 │ ├── ...
使用Python实现自动化邮件发送,可以让你摆脱繁琐的重复性业务,可以节省非常多的时间。我们把报表做出来以后一般都是需要发给别人查看,对于一些...只需要掌握一点点 Python 就可以用程序去处理这些重复烦人的工作。
用Python自动化管理邮件简直太方便了.
要通过Python实现自动发送邮件,可以按照以下描述进行操作: 导入相关模块:首先,导入Python中用于发送邮件的相关模块,如smtplib和email。 配置SMTP服务器:确定要使用的SMTP服务器,并设置相应的配置参数,如...
今天,就来好好学习一下使用Python发送邮件吧。 SMTP是发送邮件的协议,Python内置对SMTP的支持,可以发送纯文本邮件、HTML邮件以及带附件的邮件。 Python对SMTP支持有smtplib和email两个模块,email负责构造邮件,...
《Python自然语言处理(影印版)》提供了非常易学的自然语言处理入门介绍,该领域涵盖从文本和电子邮件预测过滤,到自动总结和翻译等多种语言处理技术。在《Python自然语言处理(影印版)》中,你将学会编写Python程序...
利用python,使用smtplib以及email库,对进行邮件的自动发送进行代码编写。通过设置邮件正文、附件、接收人员以及抄送人员,可进行邮件的自动发送,在实际处理问题时,有效的对需要自动发送或判定为需要发送邮件的...
本书提供了对自然语言处理的高度可理解的介绍,自然语言处理是支持各种语言技术的领域,从预测性文本和电子邮件过滤到自动摘要和翻译。
本书提供了非常易学的自然语言处理入门介绍,该领域涵盖从文本和电子邮件预测过滤,到自动总结和翻译等多种语言处理技术。在本书中,你将学会编写Python程序处理大量非结构化文本。你还将通过使用综合语言数据结构...
图书馆管理系统是一个基于 GUI 的桌面应用程序,它是用 python 制作的。 描述 图书馆管理系统是一个使用python的桌面应用程序。它有一个 sqlite3 数据库,可以将数据存储到本地数据库中,不需要任何额外的软件。它...
├─千锋Python教程:第01章 第一个Python程序与数据存储及数据类型(9集) │ │ .DS_Store │ │ │ ├─code │ │ 1、数据存储.txt │ │ 2、第一个python程序.py │ │ 3、注释.py │ │ 4、输出与输入.py │ ...
内容包括:Python语言的类型和对象、操作符和表达式、编程结构和控制流、函数、序列、多线程、正则表达式、面向对象编程、文件操作、网络编程、邮件收发、数据库操作等,提供Python爬虫、数据处理项目范例,各章还...
背景:9月份有部分数据...1、获取到邮件的时间,由于可能收到格林威治时间邮件,所以这里做了相应的处理 def getTimeStamp(cn): messages=mailServer.retr(cn)[1] mail = email.message_from_bytes('\n'.encode('
Awesome Python环境管理开发包和依赖分发构建工具文件操作日期和时间文本处理自然语言处理文档配置命令行工具图像处理音频视频地理位置HTTP数据库数据库驱动ORMWeb框架CMSRESTful API身份认证模板引擎事件和任务队列...
主要介绍了Python实现读取邮箱中的邮件功能,可读取邮件文本及附件的功能,涉及Python针对邮件的获取、分析、保存等相关操作技巧,需要的朋友可以参考下