Python實現(xiàn)自動發(fā)送測試報告郵件的示例代碼
前言
SMTP(Simple Mail Transfer Protocol)也就是簡單郵件傳輸協(xié)議,是一種提供可靠且有效電子郵件傳輸?shù)膮f(xié)議。
python的smtplib模塊就提供了一種很方便的途徑發(fā)送電子郵件,它對smtp協(xié)議進(jìn)行了簡單的封裝。
python發(fā)郵件主要需要兩個模塊:smtplib和email,這兩個模塊是python自帶的庫,import即可使用。smtplib主要負(fù)責(zé)發(fā)送郵件,即一個發(fā)送郵件的動作,如連接郵箱服務(wù)器,登錄郵箱,發(fā)送郵件。
email主要負(fù)責(zé)構(gòu)造郵件,指的是郵箱頁面顯示的一些構(gòu)造,如發(fā)件人,收件人,主題,正文,附件等。
smtp授權(quán)
上面已經(jīng)說到發(fā)送郵件是基于smtp服務(wù)的,那么我們就需要一個可以登錄smtp服務(wù)器的賬號及授權(quán)碼,這里以qq郵箱為例,登錄qq郵箱后,在設(shè)置》賬戶這里就可以開啟smtp,開啟后發(fā)送短信獲取授權(quán)碼即可。
發(fā)送郵件
涉及的部分參數(shù)說明:
連接到smtp服務(wù)器:smtplib.SMTP_SSL(smtp服務(wù)器地址, 端口號)
登錄smtp服務(wù)器:smtp.login(smtp郵件地址, 登錄smtp的授權(quán)碼)
構(gòu)造郵件對象:MIMEMultipart()
創(chuàng)建郵件內(nèi)容:MIMEText(郵件內(nèi)容, “plain”, “utf8”)兩個參數(shù)文本類型,編碼格式;如果要發(fā)送html格式的郵件內(nèi)容,則把plain(默認(rèn))替換成html
把相關(guān)內(nèi)容添加到郵件:smg.attach(具體的內(nèi)容),添加郵件內(nèi)容
- 設(shè)置郵件主題:smg[“Subject”] = 主題內(nèi)容
- 設(shè)置郵件發(fā)件人:smg[“From”] = 郵件地址
- 設(shè)置郵件收件人:smg[“To”] = 郵件地址
發(fā)送郵件:smtp.send_message(郵件對象, from_addr=發(fā)件人郵件地址, to_addrs=收件人郵件地址)如果有多個收件人則用list格式傳給to_addrs
創(chuàng)建附件:MIMEApplication(附件內(nèi)容)
創(chuàng)建圖片:MIMEImage(圖片內(nèi)容),與附件一樣
設(shè)置附件或圖片等:file_msg.add_header(_name, _value, **_params):擴(kuò)展標(biāo)題設(shè)置,_name為要添加的標(biāo)題字段,_value為標(biāo)題的值。
msg.add_header('Content-ID', 'imgid') #設(shè)置圖片ID msg.add_header('Content-Disposition', 'attachment', filename='test.xlsx')#為附件添加一個標(biāo)題 msg.add_header('Content-Disposition', 'attachment', filename=('utf-8', '', '中文標(biāo)題')) #添加非ASCII字符時需指定編碼
import smtplib from email.mime.text import MIMEText # 創(chuàng)建文本內(nèi)容的郵件內(nèi)容 from email.mime.multipart import MIMEMultipart # 創(chuàng)建帶附件的實例 from email.mime.application import MIMEApplication # 用于創(chuàng)建附件的 from email.mime.image import MIMEImage # 用于創(chuàng)建圖片,與添加附件一樣的,下面不做舉例 # 第一步: 連接到smtp服務(wù)器 smtp = smtplib.SMTP_SSL("smtp.qq.com", 465) smtp.login("xxxxxx@qq.com","afajccbab") # 第二步:構(gòu)建郵件 smg = MIMEMultipart() text_smg = MIMEText("這是郵件文本內(nèi)容", "plain", "utf8") # 郵件內(nèi)容 smg.attach(text_smg) # 添加到郵件 # 添加附件 file_msg = MIMEApplication(open(r"C:\project\test\reports\report.html","rb").read()) file_msg.add_header('content-disposition', 'attachment', filename='report.html') smg.attach(file_msg) # 添加到郵件 smg["Subject"] = "測試測試" # 主題 smg["From"] = "aaaaaa@qq.com" # 郵件內(nèi)顯示的發(fā)件人 smg["To"] = "bbbbb@163.com" # 郵件內(nèi)顯示的收件人 # 第三步發(fā)送郵件 smtp.send_message(smg, from_addr="aaaaaa@qq.com", to_addrs="bbbbb@163.com")
還有更多的用法,有興趣的可以再深入研究。
封裝及應(yīng)用
下面是一個簡單的封裝例子,可以根據(jù)自己的需要優(yōu)化,甚至可以把郵件的主題、發(fā)件人、收件人以及smtp的登錄郵箱授權(quán)密碼等提取出來放到配置文件來維護(hù)。
import smtplib from email.mime.text import MIMEText from email.mime.multipart import MIMEMultipart from email.mime.application import MIMEApplication def send_email(file_path): smtp = smtplib.SMTP_SSL("smtp.qq.com",465) smtp.login("xxxxx@qq.com","smtp登錄密碼") smg = MIMEMultipart() text_smg = MIMEText("這是郵件文本內(nèi)容", "plain", "utf8") smg.attach(text_smg) file_msg = MIMEApplication(open(file_path,"rb").read()) file_msg.add_header('content-disposition', 'attachment', filename='report.html') smg.attach(file_msg) smg["Subject"] = "測試報告" smg["From"] = "aaaaaa@qq.com" smg["To"] = "bbbbbbb@163.com" smtp.send_message(smg,from_addr="aaaaaa@qq.com",to_addrs="bbbbbbb@163.com")
測試報告都是測試用例運行完之后才生成,那么我們就可以把發(fā)郵件這一步放到測試報告生成之后:
import unittest import os from common.contants import CASE_DIR, REPORT_DIR from common.send_email import send_email # 第一步:創(chuàng)建測試套件 suite = unittest.TestSuite() # 第二步加載用例到套件 loader = unittest.TestLoader() suite.addTest(loader.discover(CASE_DIR)) report_path = os.path.join(REPORT_DIR, "report.html") with open(report_path, "wb") as f: runner = HTMLTestRunner(stream=f, title="24期的測試報告", description="測試報告的描述信息。。。。。", tester="MuSen" ) # 運行測試套件 runner.run(suite) # 執(zhí)行完代碼之后,發(fā)送報告 send_email(report_path)
以上就是Python實現(xiàn)自動發(fā)送測試報告郵件的示例代碼的詳細(xì)內(nèi)容,更多關(guān)于Python自動發(fā)送郵件的資料請關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
python list 查詢是否存在并且并返回下標(biāo)的操作
這篇文章主要介紹了python list 查詢是否存在并且并返回下標(biāo)的操作,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2021-05-05Python實現(xiàn)復(fù)制文件從一個目錄到另外一個目錄
這篇文章主要為大家詳細(xì)介紹了如何使用Python實現(xiàn)復(fù)制文件從一個目錄到另外一個目錄,文中的示例代碼簡潔易懂,有需要的小伙伴可以參考一下2025-01-01python3.8 微信發(fā)送服務(wù)器監(jiān)控報警消息代碼實現(xiàn)
這篇文章主要介紹了python3.8 微信發(fā)送服務(wù)器監(jiān)控報警消息代碼實現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下2019-11-11