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: 测试组

最新文章

  1. php止刷新页面重复提交
  2. C++ STL 学习 :for_each与仿函数(functor)
  3. 过滤3个字节以上的utf-8字符
  4. PHP错误The server encountered an internal error or misconfiguration and was unable to complete your re
  5. 【POJ】3134 Power Calculus
  6. web前端安全相关
  7. Discuz登录慢、退出也慢的原因?
  8. linux root修改密码失败
  9. 好好写代码吧,没事别瞎B去创业!
  10. Pandaboard ES编译bootloader、xloader、内核、以及安卓系统
  11. 一道有趣的Twitter技术面试题
  12. springboot 配置mybatis
  13. form 组件
  14. TP5新增模块
  15. mysql伪列
  16. CF1153F Serval and Bonus Problem
  17. Ubuntu修改时间时区
  18. python---django中模板渲染(csrf令牌使用,自定义模板函数)
  19. https页面证书验证、加密过程简介
  20. 慕课网Python基础学习整理

热门文章

  1. 基于jQuery可悬停控制图片轮播代码
  2. laravel项目安装
  3. 【转】WPF自定义控件与样式(13)-自定义窗体Window & 自适应内容大小消息框MessageBox
  4. Hadoop、Spark 集群环境搭建问题汇总
  5. SpringBoot2.X + SpringCache + redis解决乱码问题
  6. Vim文档编辑
  7. Linux系统解析域名的先后顺序【转帖】
  8. 【Tensorflow】tensorboard
  9. puppet(3) 变量、数据类型、表达式、条件判断语句-if、case、selector、unless
  10. Nestjs 增加全局前缀