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

python 发送email邮件带附件的更多相关文章

  1. 【Python开发】python发送各类邮件的方法

    转载: python发送各类邮件的主要方法 python中email模块使得处理邮件变得比较简单,今天着重学习了一下发送邮件的具体做法,这里写写自己的的心得,也请高手给些指点. 一.相关模块介绍 发送 ...

  2. [Python] 发送email的几种方式

    python发送email还是比較简单的,能够通过登录邮件服务来发送,linux下也能够使用调用sendmail命令来发送,还能够使用本地或者是远程的smtp服务来发送邮件,无论是单个,群发,还是抄送 ...

  3. 使用python调用email模块发送邮件附件

    使用python调用email模块实现附件发送 需要模块: import datetime import time import sys import mimetypes import smtplib ...

  4. Python 发送 email 的两种方式

    Python发送email的两种方式,分别为使用登录邮件服务器.调用sendmail命令来发送三种方法 Python发送email比较简单,可以通过登录邮件服务来发送,linux下也可以使用调用sen ...

  5. 使用python发送163邮件 qq邮箱

    使用python发送163邮件 def send_email(title, content): import smtplib from email.mime.multipart import MIME ...

  6. C#发送Email邮件(实例:QQ邮箱和Gmail邮箱)

    下面用到的邮件账号和密码都不是真实的,需要测试就换成自己的邮件账号. 需要引用: using System.Net.Mail; using System.Text; using System.Net; ...

  7. [转]C#发送Email邮件 (实例:QQ邮箱和Gmail邮箱)

    下面用到的邮件账号和密码都不是真实的,需要测试就换成自己的邮件账号. 需要引用:using System.Net.Mail;using System.Text;using System.Net; 程序 ...

  8. 【转】C#发送Email邮件

    转自:http://hi.baidu.com/bluesky_cn/item/8bb060ace834c53f020a4df2 下面用到的邮件账号和密码都不是真实的,需要测试就换成自己的邮件账号. 需 ...

  9. python 发邮件-带附件-文本-html

    #!/usr/bin/python # encoding=utf-8 # Filename: send_email.py from email.mime.image import MIMEImage ...

随机推荐

  1. Android Studio编译报错“java.lang.OutOfMemoryError: GC overhead limit exceeded

    1.在build.gradle添加脚本指定编译堆内存 如果在整个工程中生效,则在build.gradle中增加如下配置: android { .............. dexOptions { i ...

  2. [Linux]Linux下signal function传参方式

    https://stackoverflow.com/questions/6970224/providing-passing-argument-to-signal-handler This is a r ...

  3. 面试杂谈之我的实习求职之路(7个offer)

    现在是5月11号,刚从北京到家,总算也可以歇歇了,最近一段时间真是忙于奔命的感觉,也确实体会到了找工作的艰辛,总而言之,求职之路,如人饮水,冷暖自知. 我想把这段时间找工作的体验和经历分享出来告诉大家 ...

  4. Windows 10下安装配置Caffe并支持GPU加速(修改版)

    基本环境 建议严格按照版本来 - Windows 10 - Visual Studio 2013 - Matlab R2016b - Anaconda - CUDA 8.0.44 - cuDNN v4 ...

  5. Linux系统时间同步方法小结

    在Windwos中,系统时间的设置很简单,界面操作,通俗易懂,而且设置后,重启,关机都没关系.系统时间会自动保存在BIOS时钟里面,启动计算机的时候,系统会自动在BIOS里面取硬件时间,以保证时间的不 ...

  6. 承上 DBlink 与 SCN | 新增视图找出外部 SCN 跳变

     综述    SQL> set pages 100 lines 200 col result for a15 col OPERATION_TIMESTAMP for a35 col HOST_N ...

  7. sql 同步2个表中的一个字段数据

    update PMS.tenant_contract a inner join(select id,home_id from PMS.owner_contract) c on a.id = c.id ...

  8. Scala 按名称参数调用函数 与 =>的用法

    转自:http://blog.csdn.net/shenxiaoming77/article/details/54835679 通常情况下,函数的参数是传值参数:即参数的值在它被传递给函数之前被确定. ...

  9. webpack简介与使用

    欢迎小伙伴们为 前端导航仓库 点star https://github.com/pfan123/fr...前端导航平台访问 CommonJS 和 AMD 是用于 JavaScript 模块管理的两大规 ...

  10. php算法题2

    一群猴子排成一圈,按1,2,…,n依次编号.然后从第1只开始数,数到第m只,把它踢出圈,从它后面再开始数,再数到第m只,在把它踢出去…,如此不停的进行下去,直到最后只剩下一只猴子为止,那只猴子就叫做大 ...