Python网络编程基础(3)——Email服务

第三部分 E-mail服务

9 E-mail的编写和编码

1. Header

header不影响邮件的实际发送行为,而且可以被伪造。实际的发送信息由SMTP携带。header的作用在于帮助邮件程序,例如From 在回复的时候可以使用。

2. 撰写传统的邮件

trad_gen_newhdrs.py介绍了使用email模块的MIMEText来生成一封email以及添加header的过程。

3. 解析传统的邮件

trad_parse.py对一封传统邮件进行解析。打印出headers与内容。

date_parse.py则解析一封邮件的日期。

4. 理解MIME

Multipurpose Internet Mail ExtensionsMIME是向后兼容的,它支持不同的传输编码。MIME提供内容类型,例如text/plainMIME内容类型也应用在其它协议中,例如HTTP

对于一个部分的邮件,MIME只是加上几个headers来说明内容类型和字符集。对于多部分邮件则放置特殊标记来区分多个段,每一部分可以含有自己的headers。为了照顾不支持MIME的程序,通常将最基本的内容放在前面。

5. 添加MIME附件

mime_gen_basic.py展示了如何给邮件添加附件。邮件使用MIMEMultipart()建立,先添加文本部分,使用MIMEText(),最后再逐一添加附件。

6. 添加MIME替换方法

mime_gen_alt.py使用MIMEMultipart(‘alternative’) 来建立一个可以替换内容的邮件,邮件有纯文本版本和HTML版本。

7. 构建非英语Header

mime_headers.py使用了一个非ASCIIheader

from email.Header import Header

fromhdr = Header("Michael M/xfcller", 'iso-8859-1')

8. 组成嵌套的多部分

mime_gen_both.py,又用了alternative,又添加了附件。

9. 解析MIME邮件

mime_structure.py遍历邮件树,显示邮件的结构、header

mime_decode.py对指定的部分(附件)进行解码。

mime_parse_headers.pyheader进行解码。主要是针对非ASCII编码的header

10 SMTP

本地没有smtp库,所以没仔细看。

1.    SMTP库简介

simple.py向指定邮箱发送一封邮件。

2.    错误处理和会话调试

debug.py中,使用s.set_debuglevel(1)对与SMTP服务器的整个会话过程显示出来。

3.    EHLO中得到信息

ehlo.py使用s.ehlo()来从服务器获得信息。

4.    使用SSLTLS

tls.py使用tls来向发送邮件。

5.    认证

login.py使用s.login(username, password)登录到SMTP服务器。

11 POP

POP(The Post Office Protocol)

 

popconn.py登录到远程POP服务器。输出邮件数量和总大小。

apop.py使用apop认证登录。

 

mailbox.py使用list()方法返回邮件及其大小。

 

download.py下载邮件。

 

download-and-delete.py下载并且删除邮件。

12 IMAP

IMAPINTERNET MESSAGE ACCESS PROTOCOL)的RFC文档:http://www.isi.edu/in-notes/rfc3501.txt

Twisted的下载地址:http://twistedmatrix.com/trac/wiki/Downloads

1.    Twisted基础

tconn.py连接一个IMAP服务器并且打印出服务器支持的功能,并且介绍了典型的Twisted应用程序。

 

tlogin.py登录IMAP服务器。

 

t-error.py介绍了Twisted的错误处理,与通常的抛出异常方式不同,Twisted使用addErrback的方法来添加错误处理函数。

 

2.    文件夹

tlist.py使用list方法来列出文件夹列表。

 

texamine.py使用examine方法来检查INBOX的信息。

访问邮件可以使用Message number(在选择文件夹的时候确定,多次访问文件夹会发生变化) 或者是 UID(不变)

3.    下载

tdlbig.py使用fetchSpecific('1:*', peek = 1))下载整个邮箱。peek设置为1(True)可以让被阅读的邮件不被标记为已读(seen)

 

tdownload.py下载一封单独的邮件。

首先使用fetchUID('1:*')获得所有邮件的UID,并且传递给handleuids函数。handleuids使用fetchSpecific(uid, uid = 1, peek = 1)来下载一封邮件,uid=1表示第一个参数是uid而不是message number。它还创建了一个DeferredList dl = defer.DeferredList(dlist),并且给这个DeferredList添加了回调函数。

 

4.    标记和删除

tflags.py使用fetchFlags('1:*')获取所有邮件的标记。

 

tdownload-and-delete.py使用addFlags()下载并且删除邮件。

d = self.proto.addFlags(str(self.uidlist), ["//Deleted"], uid = 1)

5.    取得邮件的部分内容

tstructure.py使用fetchSimplifiedBodyfetchEnvelope来取得邮件的结构信息。

 

tdlpart.py使用fetchSpecific来获得邮件的一部分。

 

6.    查找邮件

tsearch.py使用search方法来查找邮件,查询使用NotOrQuery构造。

 

7.    添加邮件

tappend.py使用append方法向IMAP服务器上传一封邮件。

 

 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值