接口测试基础——第2篇smtplib发送文字邮件

王者荣耀真害人!这就是昨天没发的原因……

我先给大家补充一个用QQ发送纯文本电子邮件的代码,用QQ的朋友可以参考一下:

# coding=utf-8

import smtplib
from email.mime.text import MIMEText
mail_host = “smtp.qq.com”
receivers = “123@qq.com”
sender = “456@qq.com”
passwd = ‘QQ邮箱的授权码’
contents = “python发送邮件”
# 构造邮件正文
msg=MIMEText(contents,”plain”,”utf-8”)
# 构造邮件头部
msg[“From”]=sender
msg[“To”]=receivers
msg[“Subject”] = “主题”
try:
    server = smtplib.SMTP_SSL(mail_host, 465)
    server.login(sender, passwd)
    server.sendmail(sender, receivers, msg.as_string())
    print “发送成功”
except smtplib.SMTPException:
    print “无法发送”

今天我们要写的代码是发送带附件的电子邮件:

# coding: utf-8

import smtplib
from email.mime.text import MIMEText
from email.mime.multipart import MIMEMultipart

sender = '你的邮箱@163.com'
passwd = '授权码'
receivers = ['123@qq.com','456@qq.com']
receiver = ';'.join(receivers)
mail_host = 'smtp.163.com'

msg = MIMEMultipart()
msg['From'] = sender
msg['To'] = receiver
msg['Subject'] = 'Python test'
# 邮件正文
msg.attach(MIMEText('sending email test', 'plain', 'utf-8'))
# 构造附件1
att1 = MIMEText(open('文件的路径比如:C:\\Users\\lenovo\\Desktop\\a.txt', 'rb').read(), 'base64', 'utf-8')
att1['Content-Type'] = 'application/octet-stream'
att1['Content-Disposition'] = 'attachment; filename= "a.txt"'
msg.attach(att1)
# 构造附件
att2 = MIMEText(open('文件的路径比如:C:\\Users\\lenovo\\Desktop\\b.txt').read(), 'base64', 'utf-8')
att2['Content-Type'] = 'application/octet-stream'
att2['Content-Disposition'] = 'attachment; filename="b.txt"'
msg.attach(att2)

try:
    smtpObj = smtplib.SMTP()
    smtpObj.connect(mail_host, 25)
    smtpObj.login(sender, passwd)
    smtpObj.sendmail(sender, receivers,msg.as_string())
    print 'Success'
except smtplib.SMTPException:
    print 'Error'

运行以后就可以收到带有附件的电子邮件了。

如果不明白,就多谢两遍,如果还不明白,可以留言,船长会在看到后的第一时间给大家解答。代码都是船长运行通过的,所以遇到问题后大家可以先想一想问什么会运行不通过~~~大家和我一起加油!

原文发布于微信公众号 - 自动化测试实战(gh_839e78b6ba28)

原文发表时间:2017-09-14

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏Core Net

ASP.NET Core 2.0 : 六. 举个例子来聊聊它的依赖注入

6923
来自专栏程序员的SOD蜜

单数据库,多数据库,单实例,多实例不同情况下的数据访问效率测试

最近公司的项目准备优化一下系统的性能,希望在数据库方面看有没有提升的空间,目前压力测试发现数据库服务器压力还不够大,Web服务器压力也不是很大的情况下,前台页面...

24710
来自专栏wOw的Android小站

[Objective-C]深入理解GCD

GCD(Grand Central Dispatch)是libdispatch的市场名称,而libdispatch作为Apple的一个库,为并发代码在多核硬件(...

1241
来自专栏Core Net

ASP.NET Core 2.0 : 六. 举个例子来聊聊它的依赖注入

3415
来自专栏友弟技术工作室

密码机制

djeqtdyy-joao-silas 今天主要是介绍的内容是,一般网站,或应用,在用户注册后,用户的密码如何保存在数据库中,当然,肯定不是明文的.只有当事人知...

3659
来自专栏Jack-Cui

基于nRF24L01的一对多节点通信(一收多发)

平台:STM32F103ZET6 无线通信模块:nRF24L01 功能描述:使用nRF24L01构建无线通讯节点,实现一个节点接收,六个节点发送的无线...

2620
来自专栏崔庆才的专栏

JavaScript加密逻辑分析与Python模拟执行实现数据爬取

本节来说明一下 JavaScript 加密逻辑分析并利用 Python 模拟执行 JavaScript 实现数据爬取的过程。在这里以中国空气质量在线监测分析平台...

7077
来自专栏逆向与安全

360加固保动态脱壳

1.我是通过对dvmLoadNativeCode函数下断,分析它执行流程最后到达壳入口(如果您有更好的办法还请告知,感谢中...),函数dvmLoadNativ...

1740
来自专栏比原链

剥开比原看代码17:比原是如何显示交易的详细信息的?

Gitee地址:https://gitee.com/BytomBlockchain/bytom

821

Android到Windows 8:使用文件

本文将介绍如何编写Win8中Windows Store里的应用代码,用于保存图像、文档等文件。在应用中,文件可以保存到应用定义的位置或USB设备之类的外部存储设...

1958

扫码关注云+社区

领取腾讯云代金券