1. 【實(shí)操系列】| Python發(fā)送郵件的一個(gè)具體應(yīng)用

        共 2466字,需瀏覽 5分鐘

         ·

        2021-01-25 15:38


        想要更好的閱讀體驗(yàn),點(diǎn)擊文末閱讀原文。

        簡單介紹

        本人是自動(dòng)化測試工程師,主要語言為Python, 實(shí)操系列是結(jié)合我平時(shí)工作中遇到的情況寫的一些腳本,總結(jié)分享出來的東西。?

        因?yàn)檎鎸?shí)的場景難以模擬,只能說個(gè)大概,但是因?yàn)檎鎸?shí)場景的總結(jié)分享,應(yīng)該來說有一定的參考和學(xué)習(xí)價(jià)值。

        不過有沒有通用性完全是和業(yè)務(wù)相關(guān),業(yè)務(wù)場景決定腳本邏輯,寫代碼主要還是鍛煉解決問題的能力。

        需求

        公司測試場景是用遠(yuǎn)端PC(windows10)連接測試物料,現(xiàn)在大部分都是這種場景:遠(yuǎn)端PC連接測試物料,本地PC連接遠(yuǎn)端PC操作,直接自動(dòng)化測試。

        現(xiàn)在的問題是,在測試場景不穩(wěn)定的情況下,經(jīng)常會(huì)測試中斷,然后登陸遠(yuǎn)端服務(wù)器排查問題后繼續(xù)跑起來。

        因?yàn)椴恢篮螘r(shí)異常中斷,需要頻繁的登陸(這個(gè)環(huán)節(jié)還沒集成到CI)查看情況,所以想定時(shí)將環(huán)境截屏或者搜集log,然后通過郵件發(fā)送給指定人員,如果有異常,再登陸查看(每次輸賬號密碼也很煩人)。

        如果沒有此應(yīng)用場景,可以忽略此文章。

        回顧

        用Python發(fā)送郵件的基本實(shí)現(xiàn)參考我之前的公眾號文章

        更多Python發(fā)送郵件資料訪問此鏈接:

        https://www.runoob.com/python/python-email.html

        代碼

        導(dǎo)包

        #?-*-?coding:?UTF-8?-*-import os
        import time
        import socket
        import smtplib
        from email.mime.image import MIMEImage
        from email.mime.multipart import MIMEMultipart
        from email.mime.text import MIMEText
        from email.header import Header
        from PIL import ImageGrab

        郵件的一些常規(guī)設(shè)置

        # 第三方SMTP服務(wù)
        mail_host = "smtp.qq.com" # 設(shè)置服務(wù)器
        mail_user = "[email protected]" # 你的用戶名
        mail_pass = "xxx" # 你生成的口令,不知道的請看回顧


        # 設(shè)置發(fā)送人和收件人
        sender = "[email protected]" # 會(huì)顯示由這個(gè)郵箱代發(fā)
        receivers = "[email protected]" # 你要發(fā)送給的人,可以固定,可以讀取文件


        pic_name = time.strftime("%Y%m%d_%H%M%S", time.localtime())
        hostname = socket.gethostname()
        ip = socket.gethostbyname(hostname)

        截圖功能

        def pic():
        im = ImageGrab.grab()
        im.save(r'C:\Python_Code\email\picture\{}.jpeg'.format(pic_name))
        time.sleep(2)

        發(fā)送郵件功能

        def send_email(info):
        # 發(fā)送郵件
        subject = 'IP:{} Time:{}'.format(ip, pic_name) # 郵件主題
        msg = MIMEMultipart('related')
        # 第一個(gè)參數(shù)為郵件內(nèi)容,第二個(gè)參數(shù)為設(shè)置文本格式,第三個(gè)參數(shù)為編碼設(shè)置
        content = MIMEText('

        status check

        '
        '', 'html', 'utf-8')
        msg.attach(content)
        msg['Subject'] = Header(subject, 'utf-8') # 標(biāo)題
        msg['From'] = Header("blyang", 'utf-8') # 發(fā)件人


        file = open(r'C:\Python_Code\email\picture\{}.jpeg'.format(pic_name), "rb")
        img_data = file.read()
        file.close()


        img = MIMEImage(img_data)
        img.add_header('Content-ID', 'imageid')
        msg.attach(img)


        try:
        smtpObj = smtplib.SMTP_SSL(mail_host, 465) # qq郵箱帶SSL
        smtpObj.login(mail_user, mail_pass) # 登陸
        smtpObj.sendmail(sender, receivers, msg.as_string())
        print("send success")
        except smtplib.SMTPException:
        print("Error: send fail")




        if __name__ == "__main__":
        while True:
        pic()
        send_email()
        time.sleep(60 * 60)

        總結(jié)

        這是一個(gè)臨時(shí)的小需求,不過確實(shí)可以幫助節(jié)省很多精力,省去了頻繁登陸查看的低效,事實(shí)上也可以發(fā)送日志,附件等等,看具體場景。

        可能遇到的問題

        截屏失敗及解決方法:https://www.iteye.com/blog/ncs123-2247416

        如有其它問題,歡迎找我交流


        相關(guān)推薦

        【閱讀】| 又一人被抓,程序員如何避免面向監(jiān)獄編程
        【Python·翻譯】| 周刊481期
        【入門】從零開始建網(wǎng)站



        瀏覽 17
        點(diǎn)贊
        評論
        收藏
        分享

        手機(jī)掃一掃分享

        分享
        舉報(bào)
        評論
        圖片
        表情
        推薦
        點(diǎn)贊
        評論
        收藏
        分享

        手機(jī)掃一掃分享

        分享
        舉報(bào)
          
          

            1. 亚洲第一页综合 | 色婷婷五月激情小说 | 国产无码精品在线观看 | 骚货无码 | 四虎精品寂寞少妇在线观看 |