其實可以再申請乙個公司的autotest的郵箱號,但是難得麻煩了,所以用的另外乙個qq號的郵箱來做為傳送郵箱號,為了不顯示出了我的qq號碼,所以在qq郵箱中設定申請乙個工作的郵箱名,這樣就不是"號碼@qq.com"這種格式了 ,變成了foxmail的郵箱號了
郵箱在第三方登入的時候,密碼使用的都是授權碼,所以我們開通各種服務,生成乙個授權碼
測試完成後,會生成乙個測試報告,這測試報告中包含了,失敗成功用例名,總數,成功數,失敗數,日誌等詳細資訊,我需要把報告中的這些資訊全部提取出來,然後自己組裝成郵件傳送的內容資訊,測試報告是html的,所以資訊的提取也可以使用之前說的xpath的方式來提取,我使用的是re來直接匹配資訊,然後加上各種換行符和tab符,組成一串資訊來傳送
最終輸出的資訊是這樣子的,包含簡要資訊,其實還可以加入測試的版本資訊,但是我需要獲取多個裝置的資訊,暫時就沒有寫了,郵件主要起個提示作用和簡要資訊的輸出和詳細日誌附件的輸出,工作使用的是釘釘,那我們將郵件接收則設定為釘釘的郵箱 @dingwalk.com,每當執行完成後,釘釘收到郵件會直接閃爍的方式提醒,感覺很方便
本來想使用html的方式把資訊直接嵌入在郵件內容中,以網頁的方式在郵件中顯示,但是釘釘郵件中的資訊都做的處理,便簽顯示出來都是標籤名稱,沒有生效,所以還是自己組串了
使用python來傳送帶有附件的郵件,['******@dingtalk.com'],可以是多個郵件號碼,那麼則傳送給多個郵箱
幾種郵件的格式傳送方法
1.傳送不帶附件的純文字資訊的郵件
#coding:utf-8import smtplibfrom email.mime.text import mimetextfrom email.utils import formataddrmy_sender='465******@qq.com' # 發件人郵箱賬號my_pass = '這裡使用的是qq郵箱生成的密碼' # 發件人郵箱密碼my_user=['131***[email protected]','465***[email protected]'] # 收件人郵箱賬號def mail(): ret=true try: msg=mimetext('填寫郵件內容','plain','utf-8') msg['from']=formataddr(["zss",my_sender]) # 括號裡的對應發件人郵箱暱稱、發件人郵箱賬號 msg['to']=formataddr(["zw",my_user]) # 括號裡的對應收件人郵箱暱稱、收件人郵箱賬號 msg['subject']="這是一封測試郵件" # 郵件的主題,也可以說是標題 server=smtplib.smtp_ssl("smtp.qq.com", 465) # 發件人郵箱中的smtp_ssl伺服器,埠是465 server.login(my_sender, my_pass) # 括號中對應的是發件人郵箱賬號、郵箱密碼 server.sendmail(my_sender,my_user,msg.as_string()) # 括號中對應的是發件人郵箱賬號、收件人郵箱賬號、傳送郵件 server.quit() # 關閉連線 except exception: # 如果 try 中的語句沒有執行,則會執行下面的 ret=false ret=false return retif __name__ == '__main__': ret=mail() if ret: print("郵件傳送成功") else: print("郵件傳送失敗")
2.傳送帶附件的純文字資訊的郵件
3.傳送html格式中帶有的郵件
#coding:utf-8import smtplibfrom email.mime.image import mimeimagefrom email.mime.multipart import mimemultipartfrom email.mime.text import mimetextfrom email.header import headersender = '4******[email protected]'#傳送方的郵箱password = 'qgus***xx' #傳送方的密碼receivers = ['4***[email protected]'] # 接收郵件,可設定為你的qq郵箱或者其他郵箱msgroot = mimemultipart('related')msgroot['from'] = header("收件人名", 'utf-8')#收件人的姓名msgroot['to'] = header("測試", 'utf-8')subject = 'python smtp 郵件測試' #郵件的標題msgroot['subject'] = header(subject, 'utf-8')msgalternative = mimemultipart('alternative')msgroot.attach(msgalternative) #郵件正文內容 表示什麼型別,html還是文字#message.attach(mimetext('這是乙個帶有附件的郵件傳送測試……', 'plain', 'utf-8'))#html的內容mail_msg = """
python 郵件傳送測試...
test-one鏈結
"""msgalternative.attach(mimetext(mail_msg, 'html', 'utf-8'))# 指定為當前目錄 傳送哪張fp = open('test.jpg', 'rb')msgimage = mimeimage(fp.read())fp.close()# 定義 id,在 html 文字中引用msgimage.add_header('content-id', '')msgroot.attach(msgimage)try: smtpobj = smtplib.smtp_ssl('smtp.qq.com',465) #設定伺服器 smtpobj.login(sender,password) #登陸 smtpobj.sendmail(sender, receivers, msgroot.as_string())#傳送 print "郵件傳送成功"except smtplib.smtpexception: print "error: 無法傳送郵件"
smtp模組的相關方法
方法描述
smtp.set_debuglevel(level)
設定輸出debug除錯資訊,預設不輸出
smtp.docmd(cmd[, argstring])
傳送乙個命令到smtp伺服器
smtp.connect([host[, port]])
連線到指定的smtp伺服器
smtp.helo([hostname])
使用helo指令向smtp伺服器確認你的身份
smtp.ehlo(hostname)
使用ehlo指令像esmtp(smtp擴充套件)確認你的身份
smtp.ehlo_or_helo_if_needed()
如果在以前的會話連線中沒有提供ehlo或者helo指令,這個方法會呼叫ehlo()或helo()
smtp.has_extn(name)
判斷指定名稱是否在smtp伺服器上
smtp.verify(address)
判斷郵件位址是否在smtp伺服器上
smtp.starttls([keyfile[, certfile]])
使smtp連線執行在tls模式,所有的smtp指令都會被加密
smtp.login(user, password)
登入smtp伺服器
smtp.sendmail(from_addr, to_addrs, msg, mail_options=, rcpt_options=)
傳送郵件from_addr:郵件發件人
to_addrs:郵件收件人
msg:傳送訊息
smtp.quit()
關閉smtp會話
smtp.close()
關閉smtp伺服器連線
自動化郵件傳送服務
最近因為工作需要實現自動化郵件傳送的服務,先在本篇文章裡稍微記錄一下自動化在伺服器端的配置 流程跑通的郵件傳送服務 自動化指令碼cron檔案 只要完成以上兩個條件,任務就結束了,當然難點在第乙個,但是我們這篇文章主要記錄一下第二個。1 建立乙個新的cron檔案,格式如下圖,可能有點抽象不要緊,簡單來...
自動傳送郵件
程式功能 可以指定發件人,指定抄送人,指定標題,指定內容。郵件傳送基於 smtp 簡單郵件傳輸協議 郵件傳送 程式使用 smtp 協議來傳送電郵到接收者的郵件伺服器。smtp 協議只能用來傳送郵件,不能用來接收郵件,而大多數的郵件傳送伺服器都是使用 smtp 協議。smtp 協議的預設 tcp埠號是...
自動傳送郵件
import smtplib from email.mime.text import mimetext from email.header import header 傳送郵件主題 subject python email test 編寫html型別的郵件正文 msg mimetext html u...