前言

在进行日常的自动化测试实践中,我们总是需要将测试过程中的记录、结果等等等相关信息通过自动的手段发送给相关人员。python的smtplib、email模块为我们提供了很好的email发送等功能的实现。

纯文本邮件

在通常情况下,我们需要发送大量的纯文本类的邮件通知,或是发送概要性测试报告时,会用到此类发送方式,示例代码如下:

#-*- coding:utf-8 -*-

__author__ = u'苦叶子'

import smtplib

from email.mime.text import MIMEText

from email.header import Header

if __name__ == '__main__':

sender = u'sender@163.com'      # 发送人邮件地址

receiver = u'receiver@163.com'     # 接收人邮件地址

subject = u'python email文本邮件发送测试'

smtpserver = u'smtp.163.com'   # smtp服务

username = u'testname'  # 发送人邮件用户名或专用于smtp账户用户名

password = u'testpassword'  # 发送人邮件密码或专用于smtp账户的密码

    msg = MIMEText(u'你好','text','utf-8')   # 文本格式邮件 正文内容

msg['Subject'] = Header(subject,'utf-8') # 邮件标题

smtp = smtplib.SMTP()   # 初始化一个smtp对象

smtp.connect('smtp.163.com')  # 连接至smtp服务器

smtp.login(username, password)  # 登录smtp服务

smtp.sendmail(sender, receiver, msg.as_string())  # 发送邮件

smtp.quit()  # 发送完成后关闭连接

HTML形式的邮件

通常情况下,我们经常生成html格式的测试报告或记录,如果采用文本邮件方式发送,则html格式的报告或记录会将html标签也显示出来,那么为了让邮件接收者能够正常的看到html格式的报告,则需要在邮件发送时,对相应的参数进行配置,以便邮件客户端能正常解析html格式的邮件,示例如下:

#-*- coding:utf-8 -*-

__author__ = u'苦叶子'

import smtplib

from email.mime.text import MIMEText

from email.header import Header

if __name__ == '__main__':

sender = u'sender@163.com'      # 发送人邮件地址

receiver = u'receiver@163.com'    # 接收人邮件地址

subject = u'python email HTML形式邮件发送测试'

smtpserver = u'smtp.163.com'   # smtp服务

username = u'testname'  # 发送人邮件用户名或专用于smtp账户用户名

password = u'testpassword'  # 发送人邮件密码或专用于smtp账户的密码

msg = MIMEText(u'<html><h1>你好,这是html格式的邮件,哇咔咔</h1></html>','html','utf-8')  # html格式邮件

msg['Subject'] = Header(subject,'utf-8') # 邮件标题

smtp = smtplib.SMTP()   # 初始化一个smtp对象

smtp.connect('smtp.163.com')  # 连接至smtp服务器

smtp.login(username, password)  # 登录smtp服务

smtp.sendmail(sender, receiver, msg.as_string())  # 发送邮件

smtp.quit()  # 发送完成后关闭连接

带附件的邮件

文本和html格式的邮件能满足您的需要嘛?仔细回顾下,测试过程中是不是还有很多的附件要进行发送?在自动化测试过程中是不是有很多截图?等等....是的,我们还需要发送带附件的邮件来满足我们日常的测试需要,下面看看带附件的邮件发送示例:

#-*- coding:utf-8 -*-

__author__ = u'苦叶子'

import smtplib

from email.mime.text import MIMEText

from email.header import Header

if __name__ == '__main__':

sender = u'sender@163.com'      # 发送人邮件地址

receiver = u'receiver@163.com'    # 接收人邮件地址

subject = u'python email 附件邮件发送测试'

smtpserver = u'smtp.163.com'  # smtp服务

username = u'testname'  # 发送人邮件用户名或专用于smtp账户用户名

password = u'testpassword'  # 发送人邮件密码或专用于smtp账户的密码

msg = MIMEMultipart('附件')

msg['Subject'] = Header(subject,'utf-8')

#构造附件

att = MIMEText(open('C:\\1.jpg','rb').read(),'base64','utf-8') # 读取附件

att["Content-Type"] ='application/octet-stream'

att["Content-Disposition"] ='attachment; filename="1.jpg"'

msg.attach(att) # 关联附件

##############################################

smtp = smtplib.SMTP()

smtp.connect('smtp.163.com')

smtp.login(username, password)

smtp.sendmail(sender, receiver, msg.as_string())

smtp.quit()

群发邮件

在上述几个示例中,所有的邮件接收都是单个人,实际的应用中,我们则需要给一群人进行邮件发送,下面看看示例:

#-*- coding:utf-8 -*-

__author__ =u'苦叶子'

importsmtplib

fromemail.mime.textimportMIMEText

fromemail.headerimportHeader

if__name__ =='__main__':

# 发送人邮件地址

sender =u'sender@163.com'

# 群发接收人邮件地址 !!!!!

receiver = [u'receiver@163.com',u'**@xx.com',u'**@yy.com']

# 邮件标题

subject =u'python email群发邮件发送测试'

# smtp服务

smtpserver =u'smtp.163.com'

# 发送人邮件用户名或专用于smtp账户用户名

username =u'testname'

# 发送人邮件密码或专用于smtp账户的密码

password =u'testpassword'

# 文本格式邮件 正文内容

msg = MIMEText(u'你好群发','text','utf-8')

# 邮件标题

msg['Subject'] = Header(subject,'utf-8')

# 初始化一个smtp对象

smtp = smtplib.SMTP()

# 连接至smtp服务器

smtp.connect('smtp.163.com')

# 登录smtp服务

smtp.login(username, password)

# 发送邮件

smtp.sendmail(sender, receiver, msg.as_string())

# 发送完成后关闭连接

smtp.quit()

综合示例

在上述所有的示例都是按功能分类来进行一一演示,接下来的示例,则是包含了上述所有功能:

#-*- coding:utf-8 -*-

__author__ = u'苦叶子'

import smtplib

form email.mime.multipart import MIMEMultpart

from email.mime.text import MIMEText

from email.image import MIMEImage

if __name__ == '__main__':

# 定义一些连接数据

sender = u"DeepTest@xx.com"

receiver = [u'xxx@xx.com', u'xx@yy.com']

subject = u"邮件综合示例"

username = u"username"

password = u"password"

# 创建message

msg = MIMEMultipart('alternative')

msg['Subject'] = u"测试"

# 发送内容

text = u"你好,这是文本内容"

html = u"""

测试报告

测试结果概述

"""

# 添加MIME类型

partText = MIMEText(text, u'plain')

partHTML = MIMEText(html, u'html')

msg.attach(partText)

msg.attach(partHTML)

#构造附件

attach = MIMEText(open('c:\\demo.jpg').read(),    'base64', 'utf-8')

attach['Content-Type'] = 'application/octet-stream'

attach['Content-Disposition'] =    'attachment;filename="demo.jpg"'

msg.attach(attach)

# 发送邮件

smtp =smtplib.SMTP()

smtp.connect('smtp.163.com')

smtp.login(username,password)

smtp.sendmail(sender, receiver,    msg.as_string())

smtp.quit()

结束语

本文从文本邮件、html格式邮件、附件邮件以及三者综合一起使用的方式阐述了利用python email模块进行邮件发送。

python selenium2示例 - email发送的更多相关文章

  1. python selenium2示例 - 生成 HTMLTestRunner 测试报告

    前言 在python selenium2自动化测试过程中,一个合适的报告是必须的,而HTMLTestRunner模块为我们提供了一个很好的报告生成功能. 什么是HTMLTestRunner HTMLT ...

  2. python selenium2示例 - 日志管理

    logger继承图 前言 在自动化测试实践过程中,必不可少的就是进行日志管理,方便调试和生产问题追踪,python提供了logging模块来进行日志的管理.下面我们就logging模块的学习和使用进行 ...

  3. Python Email发送,通知业务完成

    Email 发送 #!/usr/bin/python # -*- coding: UTF-8 -*- import base64 import smtplib from email.mime.text ...

  4. Python调用飞书发送消息

    一.创建飞书机器人 自定义飞书机器人操作步骤,具体详见飞书官方文档:<机器人 | 如何在群聊中使用机器人?>

  5. python实现邮件的发送

    一.163邮箱设置 进入163邮箱,点击设置中的pop3/smtp/imap 开启smtp服务,如果没有开启,点击设置,手机号验证后勾选开启即可,开启后图如下: 主要用到的就是smtp服务器:smtp ...

  6. 【python】脚本连续发送QQ邮件

    今天习得用python写一个连续发送QQ邮件的脚本,经过测试,成功给国内外的服务器发送邮件,包括QQ邮箱.163邮箱.google邮箱,香港科技大学的邮箱和爱丁堡大学的邮箱.一下逐步解答相关技巧. 首 ...

  7. python auto send email

    /*************************************************************************** * python auto send emai ...

  8. 配置 SQL Server Email 发送以及 Job 的 Notification通知功能

    配置 SQL Server Email 发送以及 Job 的 Notification通知功能 在与数据库相关的项目中, 比如像数据库维护, 性能警报, 程序出错警报或通知都会使用到在 SQL Ser ...

  9. NodeJs之邮件(email)发送

    NodeJs之邮件(email)发送 一,介绍与需求 1.1,介绍 1,Nodemailer简介 Nodemailer是一个简单易用的Node.js邮件发送插件 github地址 Nodemailer ...

随机推荐

  1. 所有iOS设备的屏幕分辨率

     iPhone设备 物理分辨率是硬件所支持的,逻辑分辨率是软件可以达到的. 代数 设备 操作系统 逻辑分辨率(point) 物理分辨率(pixel) 屏幕尺寸(对角线长度) 缩放因子   iPhone ...

  2. C语言基础之指针

    1.指针的定义 格式:变量类型 *变量名; 1: // 定义了一个指针变量p 2: // 指针变量只能存储地址 3: // 指针就一个作用:能够根据一个地址值,访问对应的存储空间 4: // 指针变量 ...

  3. Visual Studio Package扩展——vsct文件简介

    首先我们使用向导生成一个package的扩展,里面就会发现一个vsct文件.vsct文件的全称是Visual Studio Command Table,它其实就是一个xml文件,通过一定的规则来描述v ...

  4. 咏南下拉列表数据敏感控件--TYNDBSearch

    咏南下拉列表数据敏感控件--TYNDBSearch 拥有下拉列表控件可以大大地加速软件系统的开发. 控件适用于DELPHI5及以上版本安装并使用. 控件的用法: procedure Tfgoods.s ...

  5. ZoomControls控件是一个可以缩放控件,可以实现两个按钮控制图片的大小

    <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android=&quo ...

  6. wildfly配置PostgreSQL数据源

    wildfly配置PostgreSQL数据源 很久以前写过在JBoss AS7上如何配置PostgreSQL数据源,此方法在wildfly上依然有效.不过,通过wildfly的命令行工具可以有更简单的 ...

  7. leetcode题解:Construct Binary Tree from Preorder and Inorder Traversal (根据前序和中序遍历构造二叉树)

    题目: Given preorder and inorder traversal of a tree, construct the binary tree. Note:You may assume t ...

  8. Spark 2.0 DataFrame map操作中Unable to find encoder for type stored in a Dataset.问题的分析与解决

    转载:http://blog.csdn.net/sparkexpert/article/details/52871000 随着新版本的spark已经逐渐稳定,最近拟将原有框架升级到spark 2.0. ...

  9. MySQL实现删除数据左右空格trim() 左空格ltrim() 右空格rtrim()

    2017-03-23 select trim(字段) from 表         删除左右空格 select ltrim(字段) from 表        删除左空格 select rtrim(字 ...

  10. js中的四舍五入函数

    刚学到这部分时,感觉特别简单.可最近写个ajax分页时,忽然忘记应该怎么使用哪种函数来计算总的页数...哎,好记星不如烂笔头啊,还是老老实实的写下来吧.随时查看. 1.Math.ceil(x):对x向 ...