码迷,mamicode.com
首页 > 编程语言 > 详细

python 邮件基础篇

时间:2016-08-21 21:07:23      阅读:165      评论:0      收藏:0      [点我收藏+]

标签:

python 操作邮件,不是很方便,说实话还不是理解的特别透彻,这次想把自己碰到的东西总结下来

邮件有imap,pop,imap协议,这次使用的是imap4协议,主要用了imap4和mail类,

代码主要参考了http://blog.csdn.net/bonnshore/article/details/8729984,里面写的很详细,可以实现收发邮件

下面把主要的代码贴一下:

 

初始化,定义邮件服务器 

self.IMAP_SERVER=imap.gmail.com
        self.IMAP_PORT=993
        self.M = None
        self.response
        self.mailboxes = [] 

 

登录,选择mailbox:

self.M = imaplib.IMAP4_SSL(self.IMAP_SERVER, self.IMAP_POR
rc, self.response = self.M.login(username, password)
tye,data = m.M.select() 

 

邮件搜索:

ret, msgnums = m.M.search(None, BODY, datapath)

 

获取邮件信息:

status, response = self.M.fetch(id,"(RFC822)")
mailText = response[0][1]
mail_message = email.message_from_string(mailText)
subject = unicode(email.Header.make_header(email.Header.decode_header(mail_message[subject])))
#print "subject_________:" +subject
mail_from = email.utils.parseaddr(mail_message["from"])[1]
mail_to = email.utils.parseaddr(mail_message["to"])[1]
time = mail_message[Date]
print [+mail_message[Date]+]+\n+From:+mail_from+  To:+mail_to+\n+Subject:+subject+\n
return self.get_first_text_block(mail_message), subject, mail_from, time

 

maintype = email_message_instance.get_content_maintype() 返回邮件里的内容是何种类型,若为text就比较好处理,如果是multipart,还得遍历email_message_instance去根据不同类型处理。

 

email.message_from_string(mailText)返回了一个结构体,里面包含了邮件的基本信息

 

邮件里比较蛋疼的是字符串编码的问题,毕竟大家的邮件格式都不一样,有些是unicode,有些是utf-8,有些是gb2312,还有附件,图片等多种格式,
当然这次也只处理了文本,暂时没有需求去处理附件和图片这些。我都是统一将字符转成unicode去处理的。

 

字符串处理的时候,可以使用chardet判断字符串类型,读写文件的时候可以用codecs指定读写的字符集类型

 

另外贴上值得参考的python处理邮件的文章;
http://www.programcreek.com/python/example/58598/email.message.as_string (处理邮件的一些例子)
https://tools.ietf.org/html/rfc3501#section-6.4.4 (邮件搜索的参考)

 

python 邮件基础篇

标签:

原文地址:http://www.cnblogs.com/crazymanpj/p/5793518.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!