程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式師世界 >> 編程語言 >  >> 更多編程語言 >> Python

Python十行代碼發送郵件

編輯:Python

前言

自動化測試框架中,一般都會在執行失敗後給測試人員發送失敗通知。常見通知方式:郵件通知、企業微信通知、釘釘通知等, 郵件通知是最為普遍的一種最正式規范的通知方式。

這次我們就聊聊Python中如何發送郵件通知,我們都知道Python內置了對SMTP的支持,可以發送純文本、富文本、HTML 等格式的郵件,但是SMTP在編寫代碼中稍有點復雜。

所以希望能有一個輕量級的解決方案,直到遇見了yagmail

准備

以163郵箱為例,在編碼之前,我們需要開啟SMTP服務。

手動增加一個授權碼。賬號、授權碼、服務器地址用於連接登錄郵箱服務器。

ymail介紹

在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發送郵件的一些基本使用,並且在我日常工作過程中也經常被用到,極力推薦大家使用。


  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式師世界 All Rights Reserved