python 邮件基础篇

发布时间:2017-09-11 11:43:33
python 邮件基础篇

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

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

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

初始化,定义邮件服务器

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指定读写的字符集类型

企业建站2800元起,携手武汉肥猫科技,做一个有见地的颜值派!更多优惠请戳:潜江SEO http://qianjiang.raoyu.net