1. 程式人生 > 其它 >python自動將新生成的報告作為附件傳送並進行封裝

python自動將新生成的報告作為附件傳送並進行封裝

傳送報告作為自動化部署來講是一個重要的環節,廢話不多說直接上程式碼吧,如果想更細緻的瞭解內容查閱本博主上篇基本傳送文章

特別叮囑一下:SMTP協議預設埠25,qq郵箱SMTP伺服器埠是465 別出醜了噢

import smtplib
import os
from smtplib import SMTP_SSL
from email.mime.text import MIMEText
from email.mime.multipart import MIMEMultipart
from 000.11111.22222 import 33333 #為了規範程式碼特將自己需要的方法進行封裝成了類,從而直接引用
from time import strftime

class Email:
def __init__(self):
self.cu = 33333()
self.host = self.cu.get_email("host")
self.port = int(self.cu.get_email("port"))
self.user = self.cu.get_email("user")
self.password = self.cu.get_email("password")
self.to_addrs_default = self.cu.get_email("to_addrs").split(",")
# 初始化email伺服器
self.smtp = SMTP_SSL(self.host, self.port)
# 登入
self.smtp.login(self.user, self.password)
def send_text(self,title,body=None,to_addrs=None,unipath=None,batch=True):
if to_addrs is None:
to_addrs = self.to_addrs_default
if batch:
#編輯新增郵件內容
mail = str(body)
msg = MIMEMultipart()
text_plain = MIMEText('附件為介面自動化測試報告,請查收!', 'plain', 'utf-8')#郵件內容
msg['From'] = self.user
msg['Subject'] = title
for i in to_addrs:
msg["to"] = i
msg.attach(text_plain)

#當前資料夾下最新檔案作為附件進行傳送
test_report = r'D:\Basic framework\ZUCC\report' # 存放檔案的目錄
lists = os.listdir(r'D:\Basic framework\ZUCC\report') # 列出目錄的下所有檔案儲存到lists
lists.sort(key=lambda fn: os.path.getmtime(test_report + "\\" + fn)) # 按時間排序
file_new = os.path.join(test_report, lists[-1]) # 獲取最新的檔案儲存到file_new
sendfile = open(file_new, 'rb').read()
text_att = MIMEText(sendfile, 'base64', 'utf-8')
text_att["Content-Type"] = 'application/octet-stream'
text_att['Content-Disposition'] = f"attachment; filename ='report_{strftime('%Y%m%d %H%M%S')}_file.xls'" # 重新命名附件
msg.attach(text_att)
#傳送資訊
try:
self.smtp.sendmail(self.user,[i], msg.as_string())
self.smtp.close()
print('郵件傳送成功')
except Exception as e:
print('郵件傳送失敗: ', str(e))
if __name__ == '__main__':
Emailutil().send_text('測試標題')

到此結束,希望各位給博主來個關注或點個大大的贊噢