1.smtplib模塊的使用 html
smtplib庫用來發送郵件。須要用到的函數以下:python
鏈接到SMTP服務器,參數爲SMTP主機和端口:
SMTP.connect([host[,port]])
登陸SMTP服務器,參數爲郵箱用戶名和密碼:
SMTP.login(user,password)
發送郵件。msg表示郵件內容:
SMTP.sendmail(from_addr, to_addrs, msg)
斷開鏈接:
SMTP.quit() 服務器
2.郵件格式MIME介紹 app
最多見的MIME首部是以Content-Type開頭的: 函數
1) Content-Type: multipart/mixed
它代表這封Email郵件中包含各類格式的MIME實體但沒有具體給出每一個實體的類型。 測試
2) Content-Type: multipart/alternative
若是同一封Email郵件既以文本格式又以HTML格式發送,那麼要使用Content-Type: multipart/alternative。這兩種郵件格式其實是顯示一樣的內容可是具備不一樣的編碼。 ui
3) Content-Type: multipart/related
用於在同一封郵件中發送HTML文本和圖像或者是其餘相似類型。 編碼
郵件主體的編碼:spa
主要是包括quoted-printable與base64兩種類型的編碼。Base64和Quoted-Printable都屬於MIME(多用途部分、多媒體電子郵件和 WWW 超文本)的一種編碼標準,用於傳送諸如圖形、聲音和傳真等非文本數據)。 server
#!/usr/bin/python
#coding:utf-8
import smtplib
from email.Header import Header
from email.mime.text import MIMEText
from email.mime.multipart import MIMEMultipart
from email.mime.image import MIMEImage
def sendMail(sender,receiver,subject):
smtpserver = 'smtp.126.com'
username = 'zhaohaihua1213'
password = '123456'
msg = MIMEMultipart('alternative')
msg['Subject'] = Header(subject,'utf-8')
#html格式構造
html = """\
<html>
<head>測試一下</head>
<body>
<p>兄弟們!<br>
大家好啊<br>
點擊進入 <a href=" http://www.mykuaiji.com ">會計家園</a>
<br><img src="cid:image1"></br>
</p>
</body>
</html>
"""
htm = MIMEText(html,'html','utf-8')
msg.attach(htm)
#構造圖片
fp = open('meinv.jpg','rb')
msgImage = MIMEImage(fp.read())
fp.close()
msgImage.add_header('Content-ID','<image1>')
msg.attach(msgImage)
#構造附件
att = MIMEText(open('Pictures.rar','rb').read(),'base64','utf-8')
att["Content-Type"] = 'application/octet-stream'
att["Content-Disposition"] = 'attatchment;filename="Pictures.rar"'
msg.attach(att)
smtp = smtplib.SMTP()
smtp.connect('smtp.126.com')
smtp.login(username,password)
smtp.sendmail(sender,receiver,msg.as_string())
smtp.quit()
sender = 'zhaohaihua1213@126.com'
receiver = '903397616@qq.com' subject = '圖片附件html發送郵件測試' sendMail(sender,receiver,subject)