zoukankan      html  css  js  c++  java
  • python 邮件基础篇

    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']+']'+'
    '+'From:'+mail_from+ ' To:'+mail_to+'
    '+'Subject:'+subject+'
    '
    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 (邮件搜索的参考)

  • 相关阅读:
    RabbitMQ在windows环境下的安装、集群配置
    c# c++通信--命名管道通信
    CreateWindow创建无边框 可拉伸窗体
    jetbrains goland 跳到上一个光标处
    centos 7 install virtualbox
    CentOS 7如何将.deb文件转换.rpm
    golang解析json报错:invalid character 'x00' after top-level value
    linux 查看内存信息,及其他硬件信息 dmidecode命令
    kali 源设置sources.list
    ubuntu linux 1604 编译安装tesseract-ocr 4.0
  • 原文地址:https://www.cnblogs.com/crazymanpj/p/5793518.html
Copyright © 2011-2022 走看看