python发送包含html、图片、附件和链接的邮件
從我的126郵箱給我的QQ郵箱發送測試郵件
1.smtplib模塊的使用
smtplib庫用來發送郵件。需要用到的函數如下:
連接到SMTP服務器,參數為SMTP主機和端口:
SMTP.connect([host[,port]])
登錄SMTP服務器,參數為郵箱用戶名和密碼:
SMTP.login(user,password)
發送郵件。msg表示郵件內容:
SMTP.sendmail(from_addr, to_addrs, msg)
斷開連接:
SMTP.quit()
2.郵件格式MIME介紹
最常見的MIME首部是以Content-Type開頭的:
?
?1) Content-Type: multipart/mixed
它表明這封Email郵件中包含各種格式的MIME實體但沒有具體給出每個實體的類型。
2) Content-Type: multipart/alternative
如果同一封Email郵件既以文本格式又以HTML格式發送,那么要使用Content-Type: multipart/alternative。這兩種郵件格式實際上是顯示同樣的內容但是具有不同的編碼。
3) Content-Type: multipart/related
用于在同一封郵件中發送HTML文本和圖像或者是其他類似類型。
郵件主體的編碼:
主要是包括quoted-printable與base64兩種類型的編碼。Base64和Quoted-Printable都屬于MIME(多用途部分、多媒體電子郵件和 WWW 超文本)的一種編碼標準,用于傳送諸如圖形、聲音和傳真等非文本數據)。
#!/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.p_w_picpath 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:meinv_p_w_picpath"></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','<meinv_p_w_picpath>')
??? 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)
執行一下看看效果:
#python email.py
?
?工作中的應用場景,用來發送zabbix監控頁面:
?
?
轉載于:https://blog.51cto.com/baiying/1185855
總結
以上是生活随笔為你收集整理的python发送包含html、图片、附件和链接的邮件的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 别人梦到我和蛇是什么意思
- 下一篇: 迅雷Chrome插件引发的Uncaugh