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项目导入aar包报错

    最近在试着接入TrPay的sdk,根据它家文档需要导入它们的aar包(paysdk-release-1.2.2.aar). 在AS中怎么给安卓项目导入aar包,网上搜一下就能看到无非也就下面三步: 1 ...

  2. 【gulp】gulp-file-include 合并 html 文件

    gulp-file-include 是 gulp 插件,它提供了一个 include 方法让我们可以像后端模板那样把公共部分的页面导入进来. 安装依赖包(包括了 gulp-file-include 和 ...

  3. SpringMvc中获取Request

    Controller中加参数 @Controller public class TestController { @RequestMapping("/test") public v ...

  4. java.lang.NoClassDefFoundError: javax/annotation/Priority

    异常内容: 2017-09-25-15-02 [localhost-startStop-1] [org.springframework.web.context.ContextLoader] [ERRO ...

  5. 使用Pip在离线环境安装Python依赖库

    一.安装多个包 1.有网的服务器 1.生成requirement.txt文件 pip freeze >/tmp/wheel_pip/requirements.txt 这个命令会把当前环境下面的p ...

  6. GLSL传递数组

    static const char *microshaderFragSource = { "varying vec4 color;\n" "uniform bool te ...

  7. python目录遍历文件名称替换

    # -*- coding:utf-8 -*- import os import os.path import shutil import chardet import codecs mysql_fil ...

  8. Sublime Text 3 3143 注册码和遇到的PyV8无法下载问题

    packagecontrol官网:https://packagecontrol.io/installation sublime安装之后,安装Package Control管理插件. sublime3 ...

  9. springboot 启动的时候报错 Error creating bean with name 'solrClient'

    springboot 启动的时候报错: org.springframework.beans.factory.BeanCreationException: Error creating bean wit ...

  10. 线程的简述Thread

    为什么有进程? 原来操作系统只能处理一件任务,有了进程就可以让操作系统处理多个任务.因为进程与进程之间是完全隔离的,涉及到了内存空间.数据的切换,所以就有了进程的概念. 已经有了进程,为什么还要线程? ...