我们在测试完成后,都会发一份邮件也就是我们的测试报告,那么既然要自动化,是不是也可以通过python帮助我们发送邮件?当然这么强大的python可以帮助你完成这个需求

SMTP

SMTP(Simple Mail Transfer Protocol)即简单邮件传输协议,它是一组用于由源地址到目的地址传送邮件的规则,由它来控制信件的中转方式。这里我们就需要用到这个库。其中SMTP支持smtplib和Email两个模块,其中smtplib负责发送邮件,email负责构建邮件,SMTP支持发送纯文本,携带附件和携带图片等功能。

1、首先导入smtplib模块和email模块中MIMEText(表示文本)

2、准备发送邮件所需要的参数(服务器,发送者账号,密码,和收件人账号)

# 服务器地址
smtpserver = 'smtp.163.com'
# 发送账号
user = 'XXXXXXXX@163.com'
# 发送密码
password = 'xxxxxxx'
# 收件人
receivers = '821006052@qq.com'

3、根据源码内容完成对参数对应填写

# 邮件标题
subject = 'python 发送邮件'
# 发送内容 (文本内容,发送格式,编码格式)
message = MIMEText('Python 通过smtplib发送邮件。。。', 'html', 'utf-8')
# 发送地址
message['From'] = user
# 接受地址
message['To'] = receivers
# 邮件标题
message['subject'] =subject

4、通过对smtplib模块对邮件进行发送

smtp = smtplib.SMTP()
# 连接服务器
smtp.connect(smtpserver)
# 登录邮箱账号
smtp.login(user,password)
# 发送账号信息
smtp.sendmail(user,receivers,message.as_string())
# 关闭
smtp.quit()

携带附件

我们正常发送邮件的时候可能会携带一些附件,当然这个功能python也可以帮助我们完成,SMTP中自带的有携带附件的模块。

1、导入email中的MIMEMultipart模块

2、准备发送邮件的配置和参数

3、邮件携带的附件

# coding:utf-8
import smtplib
from email.mime.text import MIMEText
from email.mime.multipart import MIMEMultipart # 服务器地址
smtpserver = 'smtp.163.com'
# 发送账号
user = 'xxxxxx@163.com'
# 发送密码
password = 'xxxxx'
# 收件人
receivers = '821006052@qq.com'
# 邮件标题
subject = 'python 发送携带附件邮件'
# 获取附件信息
with open('name.txt','rb',)as f:
body = f.read().decode()
message = MIMEMultipart()
# 发送地址
message['From'] = user
# 接受地址
message['To'] = receivers
# 邮件标题
message['subject'] =subject
# 正文内容
body = MIMEText(body, 'html', 'utf-8')
message.attach(body)
# 传当前目录中的name.txt文件
att = MIMEText(open('name.txt', 'rb').read(), 'base64', 'utf-8')
att["Content-Type"] = 'application/octet-stream' # 死格式
# filename 表示附件的名称
att["Content-Disposition"] = 'attachment; filename="name.txt"'
message.attach(att)
smtp = smtplib.SMTP()
# 连接服务器
smtp.connect(smtpserver)
# 登录邮箱账号
smtp.login(user,password)
# 发送账号信息
smtp.sendmail(user,receivers,message.as_string())
# 关闭
smtp.quit()

如果想要添加多个附件的话继续重新传取附件内容,只需要更改不同的附件名称即可

# 传当前目录中的name.txt文件
att = MIMEText(open('name.txt', 'rb').read(), 'base64', 'utf-8')
att["Content-Type"] = 'application/octet-stream' # 死格式
# filename 表示附件的名称
att["Content-Disposition"] = 'attachment; filename="name.txt"'

邮件中添加图片

我们正常发送邮件的时候可以添加图片,当然python发送一样可以帮助我们完成这个需求

1、添加图片,需要用到email中的MIMEImage模块

2、准备发送邮件的配置和参数

3、邮件携带的附件

由于html中不能添加图片链接,因为会被认为是恶意链接,我们可以通过在html写入图片ID,通过ID进行匹配图片内容

# 添加图片
img_body = '''
<html>
<head>Python 发送携带图片信息</head>
<body>
<p>
<p><img src="cid:imageid"></p>
<p>
</body>
</html>
'''
# 正文内容
body = MIMEText(img_body, 'html', 'utf-8')
f = open('123.jpg','rb')
mag = MIMEImage(f.read())
f.close()
# 定义图片ID在HTML中展示
mag.add_header('Content-ID', 'imageid')
# 添加图片图片
message.attach(mag)
# 添加body内容
message.attach(body)

完整代码:

# coding:utf-8
import smtplib
from email.mime.text import MIMEText
from email.mime.multipart import MIMEMultipart
from email.mime.image import MIMEImage # 服务器地址
smtpserver = 'smtp.163.com'
# 发送账号
user = 'xxxxx@163.com'
# 发送密码
password = 'xxxxxxx'
# 收件人
receivers = '821006052@qq.com'
# 邮件标题
subject = 'python 发送图片邮件' message = MIMEMultipart() # 添加图片
img_body = '''
<html>
<head>Python 发送携带图片信息</head>
<body>
<p>
<p><img src="cid:imageid"></p>
<p>
</body>
</html>
'''
# 正文内容
body = MIMEText(img_body, 'html', 'utf-8')
f = open('123.jpg','rb')
mag = MIMEImage(f.read())
f.close()
# 定义图片ID在HTML中展示
mag.add_header('Content-ID', 'imageid')
# 添加图片信息
message.attach(mag)
# 添加正文
message.attach(body)
# 发送地址
message['From'] = user
# 接受地址
message['To'] = receivers
# 邮件标题
message['subject'] =subject # 非SSL邮箱
smtp = smtplib.SMTP()
# 连接服务器
smtp.connect(smtpserver)
# 登录邮箱账号
smtp.login(user,password)
# 发送账号信息
smtp.sendmail(user,receivers,message.as_string())
# 关闭
smtp.quit()

注意: 上面的使用一些常规的邮箱,如果你的发件邮箱有SSL认证的需要打开认证信息,比如QQ邮箱需要配置一些信息

QQ邮箱举例:

1、进入-设置--账户--POP3服务内容,打开POP3/SMTP服务

2、开启后会给一个密码,这个密码就是我们需要登录的密码,复制保存下来

3、上面的代码中需要更改服务器内容

# SSL邮箱(QQ邮箱)
smtp = smtplib.SMTP_SSL(smtpserver, 465)
# 登录邮箱账号
smtp.login(user,password)
# 发送账号信息
smtp.sendmail(user,receivers,message.as_string())
# 关闭
smtp.quit()

python之发送邮件(smtplib)的更多相关文章

  1. Python自动发送邮件-smtplib和email库

    ''' 一.先导入smtplib模块 导入MIMEText库用来做纯文本的邮件模板 二.发邮件几个相关的参数,每个邮箱的发件服务器不一样,以163为例子百度搜索服务器是 smtp.163.com 三. ...

  2. Python自动发送邮件--smtplib模块

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

  3. 【转载】python中利用smtplib发送邮件的3中方式 普通/ssl/tls

    #!/usr/bin/python # coding:utf- import smtplib from email.MIMEText import MIMEText from email.Utils ...

  4. python大法好——Python SMTP发送邮件

    Python SMTP发送邮件 SMTP(Simple Mail Transfer Protocol)即简单邮件传输协议,它是一组用于由源地址到目的地址传送邮件的规则,由它来控制信件的中转方式. py ...

  5. Python——SMTP发送邮件

    一.定义 SMTP(Simple Mail Transfer Protocol)即简单邮件传输协议,它是一组用于由源地址到目的地址传送邮件的规则,由它来控制信件的中转方式.python的smtplib ...

  6. 用Python自动发送邮件

    用Python自动发送邮件     最近需要在服务器上处理一些耗时比较长的任务,因此想到利用python写一个自动发送邮件的脚本,在任务执行完毕后发送邮件通知我.以下代码以163邮箱为例: 开通163 ...

  7. python之发送邮件~

    在之前的工作中,测试web界面产生的报告是自动使用python中发送邮件模块实现,在全部自动化测试完成之后,把报告自动发送给相关人员 其实在python中很好实现,一个是smtplib和mail俩个模 ...

  8. Appium+python 自动发送邮件(1)(转)

    (原文:https://www.cnblogs.com/fancy0158/p/10056091.html) SMTP:简单传输协议,实在Internet上传输Email的事实标准. Python的s ...

  9. Python实现发送邮件(实现单发/群发邮件验证码)

    Python smtplib 教程展示了如何使用 smtplib 模块在 Python 中发送电子邮件. 要发送电子邮件,我们使用 Python 开发服务器,Mailtrap 在线服务和共享的网络托管 ...

  10. python+selenium 发送邮件

    import time from selenium import webdriver from selenium.webdriver import ChromeOptions from seleniu ...

随机推荐

  1. tarjan—算法的神(一)

    本篇包含 tarjan 求强连通分量.边双连通分量.割点 部分, tarjan 求点双连通分量.桥(割边)在下一篇. 伟大的 Robert Tarjan 创造了众多被人们所熟知的算法及数据结构,最著名 ...

  2. ASP.NET Core – Middleware

    前言 MIddleware 就是中间件, ASP.NET Core 是用来处理 http request 的. 当 request 抵到 server 就进入了 Middleware pipe. 每个 ...

  3. QT6新旧版本功能模块对比:QT6做了哪些优化重组?QT6新增加了哪些功能模块?QT6做了哪些改进、提升和优化?

    简介 本文介绍了QT6新旧版本都有的功能模块.QT6优化掉了或转移了的功能模块.QT6新增加的功能模块,以及QT6做了哪些改进.提升和优化. 文章目录 QT6新旧版本都有的功能模块 QT6优化掉了或转 ...

  4. 暑假集训CSP提高模拟18

    \[暑假集训CSP提高模拟 \ 1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1 \] Very good problem, this make my news rotate. ...

  5. docker安装及基本的镜像拉取

    docker 使用存储库安装 卸载它们以及相关的依赖项. yum remove docker \ docker-client \ docker-client-latest \ docker-commo ...

  6. OpenAI 发布适用于 .NET 库的稳定版本

    OpenAI 在 6 月发布测试版后发布了其官方 .NET 库的稳定版本.它以 NuGet 包的形式提供,支持 GPT-4o 和 GPT-4o mini 等最新模型,以及完整的 OpenAI REST ...

  7. constexpr声明 常量表达式

      constexpr 是 C++ 中用于声明 常量表达式 的关键字,表示一个变量或函数的值在编译时就可以确定,而不是在运行时计算. 这对优化非常有用,因为编译器可以直接将结果嵌入到程序中,减少运行时 ...

  8. Fio工具详解【强大的IO性能压测工具】

    Fio压测工具操作 fio -name=iouring_test -filename=/mnt/vdd/testfile -iodepth=128 -thread -rw=randread -ioen ...

  9. Java日期时间API系列22-----Jdk8中java.time包中的新的日期时间API类,Month月份和DayOfWeek星期的计算。

    Java8中为月份和星期新增的了,Month和DayOfWeek,来处理月份和星期的特殊问题,这2个类都是枚举类,对Month.DayOfWeek源码说明和简单应用,月份英文,月份英文简称,月份中文, ...

  10. 删除 设置 获取 cookies 的第三方包 js-cookies

    // 第三方包 js-cookies 是一个操作cookies的包 import Cookies from 'js-cookie' // Cookies.set(key,value) 存值 // Co ...