python 發送email郵件帶附件


 

EMAIL功能實現:

1.發送EMAIL帶附件,並且帶壓縮文件夾做為附件

#_*_coding:utf-8_*_

import smtplib from email.mime.text import MIMEText from email.mime.multipart import MIMEMultipart from email.mime.base import MIMEBase from email.header import Header from email import encoders import time import yaml,os,base64 from pos.lib import gl,scripts class EmailClass(object): def __init__(self): self.curDateTime = str(time.strftime('%Y-%m-%d %H:%M:%S',time.localtime())) #當前日期時間
        self.config = scripts.getYamlfield(gl.configFile) #配置文件路徑
        self.sender = self.config['EMAIL']['Smtp_Sender'] # 從配置文件獲取,發件人
        self.receivers = self.config['EMAIL']['Receivers']  # 從配置文件獲取,接收人
        self.msg_title = self.config['EMAIL']['Msg_Title'] #從配置文件獲取,郵件標題
        self.sender_server = self.config['EMAIL']['Smtp_Server'] #從配置文件獲取,發送服務器
        self.From = self.config['EMAIL']['From'] self.To = self.config['EMAIL']['To'] ''' 配置郵件內容 ''' @property def setMailContent(self): print self.receivers msg = MIMEMultipart() msg['From'] = Header(self.From,'utf-8') msg['To'] = self.To msg['Subject'] = Header('%s%s'%(self.msg_title,self.curDateTime),'utf-8') #附件路徑
        dirpath = gl.reportPath zipfile = os.path.join(os.path.dirname(dirpath), 'report.zip') reportfile = os.path.join(gl.reportPath, 'Report.html') scripts.zipDir(dirpath,zipfile) #壓縮報告
        #增加郵件內容為html
        fp = open(reportfile, 'rb') reportHtmlText = fp.read() msg.attach(MIMEText(reportHtmlText,'html','utf-8')) fp.close() #增加附件
        html = self.addAttach(zipfile,filename='Report%s.zip'%self.curDateTime) #自動化測試報告附件
 msg.attach(html) return msg ''' 增加附件 '''
    def addAttach(self,apath,filename='Report.html'): with open(apath, 'rb') as fp: attach = MIMEBase('application','octet-stream') attach.set_payload(fp.read()) attach.add_header('Content-Disposition', 'attachment', filename=filename) encoders.encode_base64(attach) fp.close() return attach ''' 發送電子郵件 '''
    def sendEmail(self,message): try: smtpObj = smtplib.SMTP() smtpObj.connect(self.sender_server,25) smtpObj.login(self.sender,self.config['EMAIL']['Password']) smtpObj.sendmail(self.sender,self.receivers , message.as_string()) smtpObj.quit() print "郵件發送成功"
        except smtplib.SMTPException as ex: print "Error: 無法發送郵件.%s"%ex #發送調用
 @property def send(self): self.sendEmail(self.setMailContent) if __name__=="__main__": EmailClass().send

 

2.壓縮文件夾及文件代碼:

def zipDir(dirpath,outFullName): """ 壓縮指定文件夾 :param dirpath: 目標文件夾路徑 :param outFullName: 壓縮文件保存路徑+xxxx.zip :return: 無 """ zip = zipfile.ZipFile(outFullName,"w",zipfile.ZIP_DEFLATED) for path,dirnames,filenames in os.walk(dirpath): # 去掉目標跟路徑,只對目標文件夾下邊的文件及文件夾進行壓縮
        fpath = path.replace(dirpath,'') for filename in filenames: zip.write(os.path.join(path,filename),os.path.join(fpath,filename)) zip.close()

 

3.配置文件config.yaml

 Smtp_Server: smtp.exmail.qq.com Smtp_Sender: xxxx@163.com Password: xxxxxx Msg_Title: UI自動化測試結果 Receivers: ['xxxx@126.com']  #收件人
 From: 自動化測試系統 To: 測試組

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM