大家好~我是
米洛
!
我正在從0到1打造一個開源的介面測試平臺, 也在編寫一套與之對應的教程
,希望大家多多支援。
歡迎關注我的公眾號米洛的測開日記
,獲取最新文章教程!
回顧
上一節我們初步傳送了測試郵件,由於定時任務的存在,導致我的郵箱還一直有收到每天測試計劃的執行記錄
。
但它總歸是一個半成品,只有空蕩蕩的文字資訊,所以我們還是得適當對他美化一下。
成果展示
功夫不負有心人,忙碌了1個多小時的米師傅
終於搞出了像樣點的郵件報告:
當然,這裡只有樣式哈,(因為資料我暫時是寫死的)。
開始研究(卷王模式)
其實有時候我一直在想,如果沒有antd
和element-ui
,那我寫的東西該多麼醜陋
。
這其實也說明了,本人前端功底真的是太不紮實了,也只有用這樣的元件才能拯救自己
了。
好了,認清現實以後,我不打算自己手擼css樣式了。於是我開始找有沒有啥好看的郵件模板
,你別說,還真給我找到了。
看了一下,是某鵝雲
的郵件模板,看起來還是很好看的。作者給出了對應的原始碼:
emmm,原始碼貼了以後效果不好,有需要的可以私信我。
想起來我還沒解釋為什麼要手擼css,因為在郵件裡,雖然支援你使用html
作為正文,但是它有一些限制
。
-
無法使用js
所以點選事件我們用連結來完成
-
只對行內樣式能友好支援
這2點就很讓人難受了,所以我這邊就打算借鑑他人的程式碼,在他們基礎上
修改
。
接下來幹嘛
拿到這塊程式碼以後,首先我想的是把它改成jinja2的模板程式碼,預置對應的話術,在需要動態展示的地方用{{變數}}
進行替換。相信大家寫過舊時代,前後端一體web系統的時候都用過template,也就對這種方式(模板引擎)很熟悉。
我們通過jinja2生成html,傳送html郵件到對應的接收人就好了。
但html裡面樣式雖然正常,到了郵件又會怎麼樣呢?我們試試看
調整樣式
可以看到裡面有很多變數,到時候都會通過jinja2
傳遞進去。
然後我為了測試效果,先寫死了資料:
用yagmail測試
由於yagmail很易用,所以我們之前都是用它來傳送郵件。那麼它發html郵件效果會咋樣呢?
但這怎麼能摧毀我的鬥志呢?
於是我決定試試最原始的smtplib
,說實話,現在不查資料我完全不會用的一個庫:
發現樣式沒問題,但要點選顯示圖片
才能展示圖片,這個顯然在可以接受的範圍,因為我看阿里雲的圖片也被遮蔽了。zzz
所以我們還是採用smtplib
來發郵件吧~~~
最後附上粗略版的發郵件程式碼,備個份。
import smtplib
from email.mime.text import MIMEText
from email.header import Header
sender = 'xxx@126.com'
password="客戶端token"
receivers = ['xxxx@qq.com'] # 接收郵件,可設定為你的QQ郵箱或者其他郵箱
mail_msg = """html程式碼"""
message = MIMEText(mail_msg, 'html', 'utf-8')
message['From'] = 'wuranxu1993@126.com'
message['To'] = Header("測試", 'utf-8')
subject = 'Python SMTP 郵件測試'
message['Subject'] = Header(subject, 'utf-8')
try:
smtp = smtplib.SMTP()
smtp.connect('smtp.126.com')
# 我們用set_debuglevel(1)就可以列印出和SMTP伺服器互動的所有資訊。
# smtp.set_debuglevel(1)
smtp.login(sender, password)
smtp.sendmail(sender, receivers, message.as_string())
except Exception as e:
print(e)
下一節我們們直接完成郵件通知
這塊內容,敬請期待。