【Python】傳送郵件功能淺析

楊奇龍發表於2013-07-07
之前要做一個mysql慢查詢的定時傳送程式,研究了一下python 傳送email的模組。python 可以smtplib 庫和email 庫傳送郵件。
一 stmplib 的使用
初始化語法如下:
#連線到SMTP伺服器
s = smtplib.SMTP('smtp.XXXX.com')
#傳送郵件。msg是字串,表示郵件內容。
s.sendmail(from_addr, to_addrs, msg)
#斷開連線
s.quit()
二 email 的使用
有關MIME的一些知識
多用途網際網路郵件擴充套件(MIME,Multipurpose Internet Mail Extensions)是一個網際網路標準,它擴充套件了電子郵件標準,使其能夠支援非ASCII字元、二進位制格式附件等多種格式的郵件訊息。
RFC2822定義的郵件格式中,郵件體只是單純的ASCII編碼的字元序列,MIME擴充套件郵件的格式,用以支援非ASCII編碼的文字、非文字附件及包含多個部分(multi-part)的郵件體。

MIME訊息由訊息頭、訊息體組成,即郵件的郵件頭、郵件體。中間以空行進行分隔。
1、郵件頭:包括髮件人(from)、收件人(to)、郵件主題(subject)、接收日期(date)、MIME版本、郵件內容型別等資訊。每條資訊稱為一個域,由域名後加“:”和資訊內容構成,域的首行必須頂頭寫。

2、郵件體:有text/plain(純文字)和text/html(超文字)之分,由郵件頭的“content type”域指出。可以同時存在,也可以只存在一種。這就是為什麼有些郵件既可以用html格式檢視,又可以用文字格式檢視的原因。郵件體分為多個段,稱為Payload。每個段也包括段頭段尾,中間以空行分隔。
multipart型別有3種:
multipart/mixed 
multipart/related 
multipart/alternative。
郵件裡新增附件要定義multipart/mixed段:
如果純文字超文字共存,則要定義multipart/alternative,
如存在內嵌資源,要定義multipart/related。

3、附件(attach)。傳送郵件時,可以將本機的檔案一起傳送。附件可以有0個或多個,只要附件的總大小,不超過郵件伺服器所宣告的最大容量。
class email.mime.text.MIMEText(_text[, _subtype[, _charset]])
用於生成MIME物件的主體文字:_text指定郵件內容,_subtype指定郵件型別,_charset指定編碼。
class email.mime.multipart.MIMEMultipart()
用於生成包含多個部分的郵件體的MIME物件

三 簡單例子介紹:
一個傳送至多人的例子:
#!/usr/bin/evn python
import time
import smtplib
from email.mime.text import MIMEText


mail_body='hello, this is the mail content from python and it is sended to two emails !'
fromer='qilong.yangql@gmail.com'
##注意sender 一定要是陣列,否則接受到郵件顯示收件人是被";" 截斷的字串
sender=['5XXX2@qq.com','yangXXX@163.com']
msg=MIMEText(mail_body)
msg['Subject']='hello  world '
msg['From']=fromer
msg['To']=';'.join(sender)
msg['date']=time.strftime('%a, %d %b %Y %H:%M:%S %z')

s=smtplib.SMTP('smtp.XXXXX.com')
s.sendmail(fromer,sender,msg.as_string())
s.quit()



參考:
%E5%A4%9A%E7%94%A8%E9%80%94%E4%BA%92%E8%81%AF%E7%B6%B2%E9%83%B5%E4%BB%B6%E6%93%B4%E5%B1%95

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/22664653/viewspace-765694/,如需轉載,請註明出處,否則將追究法律責任。

相關文章