python 郵件基礎篇

來源:互聯網
上載者:User

標籤:

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_PORrc, 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_________:" +subjectmail_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 郵件基礎篇

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.