自動化測試框架中,一般都會在執行失敗後給測試人員發送失敗通知。常見通知方式:郵件通知、企業微信通知、釘釘通知等, 郵件通知是最為普遍的一種最正式規范的通知方式。
這次我們就聊聊Python中如何發送郵件通知,我們都知道Python內置了對SMTP的支持,可以發送純文本、富文本、HTML 等格式的郵件,但是SMTP在編寫代碼中稍有點復雜。
所以希望能有一個輕量級的解決方案,直到遇見了yagmail。
以163郵箱為例,在編碼之前,我們需要開啟SMTP服務。
手動增加一個授權碼。賬號、授權碼、服務器地址用於連接登錄郵箱服務器。
在Python裡發郵件,yagmail大概是目前最簡單易用的方式。yagmail 只需要幾行代碼,就能實現發送郵件的功能。相比 zmail,yagmail 實現發送郵件的方式更加簡潔優雅。
github: https://github.com/kootenpv/yagmail
同時支持python2和python3兩個版本安裝
pip install yagmail
pip3 install yagmail
主要介紹發送文本和發送附件兩種常用的載體。
先簡單的發送一段文本,contents為list結構實現文本換行。
代碼例子:
import yagmail
# 連接服務器
# 用戶名、授權碼、服務器地址
yag = yagmail.SMTP(user='[email protected]', password='授權碼', host='smtp.163.com')
#接著,通過 send() 函數,將郵件發送出去
contents = ['This is the body, and here is just text http://somedomain/image.png',
'You can find an audio file attached.', '/local/path/song.mp3']
yag.send('[email protected]', 'subject', contents)
# 關閉連接
yag_server.close()
可以在接收端的郵件列表看到剛才代碼執行發送郵件,收到郵件基本沒有延遲。
如下代碼是從本地加載多個測試報告作為附件發送
代碼例子:
import yagmail
# 連接服務器
# 用戶名、授權碼、服務器地址
yag = yagmail.SMTP(user='[email protected]', password='授權碼', host='smtp.163.com')
#接著,通過 send() 函數,將郵件發送出去
# 發送對象列表
email_to = ['[email protected]', ]
email_title = '測試報告'
email_content = "這是測試報告的具體內容"
# 附件列表
email_attachments = ['./report-1652541422.html','./reports/report-1652540875.html']
# 發送郵件
yag.send(email_to, email_title, email_content, email_attachments)
# 關閉連接
yag_server.close()
在郵件的附件中可以看到兩個測試報告,點開是可以預覽的。
上面介紹了Python中使用ymail發送郵件的一些基本使用,並且在我日常工作過程中也經常被用到,極力推薦大家使用。