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

2022-09-29 17:39:12 字數 3031 閱讀 4050

引言

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

郵件傳送方式

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

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

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

介紹一下:

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

發郵件流程圖剖析:

指令碼實現傳送郵件

這裡我只介紹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_lis程式設計客棧ts,subject,content):

"""執行傳送郵件

"""user = "發件人名稱" + "www.cppcns.comself.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,user_lists,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, subject, content)

if __name__ == '__main__':

sm = sendemail()

sm.send_content()

執行程式:

結果:本文標題: python傳送郵件封裝實現過程詳解

本文位址:

python 實現傳送郵件

可採用email模組傳送電子郵件附件。傳送乙個未知mime型別的檔案附件其基本思路如下 1.構造mimemultipart物件做為根容器 2.構造mimetext物件做為郵件顯示內容並附加到根容器 3.構造mimebase物件做為檔案附件內容並附加到根容器 a.讀入檔案內容並格式化 b.設定附件頭 ...

python實現傳送郵件

有時我們需要程式在執行出現問題時傳送郵件通知我們,在這裡寫了乙個使用qq傳送的python指令碼,也是綜合了網上的資源 然而網上的案例好像都不能用 搞得,當然只要把主機埠啥的改一下就能使用其他郵箱了,如下 usr bin python coding utf 8 import smtplib from...

Python實現傳送郵件

coding utf 8 引入相關的模組 import smtplib from email.mime.text import mimetext from email.mime.image import mimeimage from email.header import header from e...