1. 程式人生 > 程式設計 >Python傳送郵件封裝實現過程詳解

Python傳送郵件封裝實現過程詳解

  引言

  在做介面測試的時候,我們不僅需要將測試結果以報告的形式展示,還需要將測試結果以郵件的形式傳送到需要知道的人手中。那麼如何傳送郵件呢?

  郵件傳送方式

  測試結果以郵件形式傳送的方式有兩種:

第一種:手動統計結果資料及報告,用郵件客戶端或web版形式傳送,比如:用QQ郵箱,foxmail郵箱...

第二種:使用指令碼傳送,比如:利用python內建對SMTP協議的支援,傳送郵件。

  介紹一下:

SMTP是傳送郵件的協議,Python內建對SMTP的支援,可以傳送純文字郵件、HTML郵件以及帶附件的郵件;Python對SMTP支援有smtplib和email兩個模組,email負責構造郵件,smtplib負責傳送郵件;Smtplib是關於 SMTP(簡單郵件傳輸協議)的操作模組,在傳送郵件的過程中,起到伺服器之間互相通訊的作用;Email是用來設定伺服器之間通訊的資訊,包括資訊頭、資訊主體等等;用指令碼發郵件時,需要先開啟自己郵箱的 SMTP 功能,各家郵箱的設定方法不同,可自行百度;

發郵件流程圖剖析:

Python傳送郵件封裝實現過程詳解

  指令碼實現傳送郵件

  這裡我只介紹python指令碼傳送郵件,具體參考下面程式碼,關鍵部分已經註釋:

# -*- coding: utf-8 -*-
'''
@author: Leo
@software: pycharm
@file: 111.py
@time: 2020/4/26 0026 1:13
@Desc:
'''
__author__ = 'Leo'
# -*- coding: utf-8 -*-
'''
@author: Leo
@software: pycharm
@file: send_email.py
@time: 2020/4/25 0025 22:02
@Desc:
 
'''
__author__ = 'Leo'
# 匯入傳送郵件模組:smtplib
import smtplib
# 匯入構造郵件模組:MIMEText
from email.mime.text import MIMEText
class SendEmail(object):
  """
  傳送郵件模組
  """
  def __init__(self):
    """
    初始化郵件配置服務
    """
    self.send_user = '###'
    self.mail_host = 'smtp.163.com'
    self.password = '###'
 
  def send_mail(self,user_lists,subject,content):
    """
    執行傳送郵件
    """
    user = "發件人名稱" + "<" + self.send_user + ">"
    message = MIMEText(content,_subtype="plain",_charset="utf8")
    message['Subject'] = subject
    message['From'] = user
    message['To'] = ";".join(user_lists)
    try:
      server = smtplib.SMTP()
      server.connect(self.mail_host)
      server.login(self.send_user,self.password)
      # as_string將MIMEText物件轉成str
      server.sendmail(user,message.as_string())
      server.close()
      print("郵件傳送成功".center(60,'='))
 
    except:
      print("郵件傳送失敗".center(60,'='))
      raise
  def send_content(self,data):
    """
    傳送郵件內容
    """
    pass_cases_nums = int(len(data['pass_cases']))
    print("用例執行成功數:%s"%pass_cases_nums)
    fail_cases_nums = int(len(data['fail_cases']))
    print("用例執行失敗數:%s"%fail_cases_nums)
    not_execute_nums = int(len(data['not_execute_cases']))
    print("用例未執行數:%s" % fail_cases_nums)
    execute_num = float(pass_cases_nums + fail_cases_nums)
    total_cases = float(pass_cases_nums + fail_cases_nums + not_execute_nums)
    pass_ratio = "%.2f%%" % (pass_cases_nums / total_cases * 100)
    fail_ratio = "%.2f%%" % (fail_cases_nums / total_cases * 100)
 
    user_lists = ['###']
    subject = "【介面自動化測試用例執行統計】"
    content = "一共 %f 個用例,執行了 %f 個用例,未執行 %f 個用例;成功 %f 個,通過率為 %s;失敗 %f 個,失敗率為 %s" % (total_cases,execute_num,not_execute_nums,pass_cases_nums,pass_ratio,fail_cases_nums,fail_ratio)
 
    self.send_mail(user_lists,content)
if __name__ == '__main__':
  sm = SendEmail()
  sm.send_content({'pass_cases':[1,3,5],'fail_cases':[2,4,6],'not_execute_cases':[1,2,3]})

執行程式:

Python傳送郵件封裝實現過程詳解

結果:

Python傳送郵件封裝實現過程詳解

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支援我們。