前言

在进行日常的自动化测试实践中,我们总是需要将测试过程中的记录、结果等等等相关信息通过自动的手段发送给相关人员。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. Signing Identities, Missing Private Key, Cannot sign App

    这个问题发生在重新安装系统后,丢失了之前的private key等.所以解决方法就是提示的revoke and request. 到developer center中找到certificate中对应的 ...

  2. python的模块itsdangerous

    这个模块主要用来签名和序列化 使用场景: 一.给字符串添加签名: 发送方和接收方拥有相同的密钥--"secret-key",发送方使用密钥对发送内容进行签名,接收方使用相同的密钥对 ...

  3. ubuntu live cd修复grub引导项

    1. 通过Ubuntu Live CD(安装盘,选择try Ubuntu)进入Ubuntu系统 打开终端,依次进行如下操作: 1. sudo fdisk -l 出现如下界面: 2. 然后会看到,有好多 ...

  4. asp.net购物车,订单以及模拟支付宝支付(四)---模拟支付宝支付

    下完订单之后到支付宝付款,成功之后再返回来修改订单状态.由于只是测试,所以就没有真正的连接到支付宝,用的是一个模拟支付宝的程序 下载地址:支付宝模拟程序 这是一个vs2010的项目,本来网上找了一个模 ...

  5. 转:敏捷方式scrum 方案

    http://www.cnblogs.com/taven/archive/2010/10/17/1853386.html 现在敏捷开发是越来越火了,人人都在谈敏捷,人人都在学习Scrum和XP... ...

  6. idea 热部署

  7. 文本文件打印类库(C#)

    我写了一个打印文本文件的类库,功能包含:打印预览.打印.打印时能够选择打印机.能够指定页码范围. 调用方法很easy: TextFilePrinter p = new TextFilePrinter( ...

  8. Angular 学习笔记——service &constant

    <!DOCTYPE HTML> <html ng-app="myApp"> <head> <meta http-equiv="C ...

  9. 福利来了,全国路网数据,poi数据

    本人现有全国路网数据,POI数据,均为原始数据.无偏移,都已分类,如图所示.有意请联系(QQ204843224), 兴趣点包含: 餐饮.村庄.大厦.服务区.公安交警.购物.火车站.机场.加油站.交通. ...

  10. 当php懈垢windows通用上传缺陷

    转自独自等待博客 早上逛乌云发现了PKAV大牛的一篇文章,针对php和windows文件上传的分析,思路很YD,果断转之与大家分享. 虽然此文可能有许多的限制条件,但是如果你认真阅读会发现,其实还是比 ...