01.纯文本邮件
Python发送邮件
SMTP是发送邮件的协议:
SMTP
(
Simple Mail Transfer Protocol
)即简单邮件传输协议
,
它是一组用于由源地址到目的
地址传送邮件的规则,由它来控制信件的中转方式。
Python
内置对
SMTP
的支持,可以发送纯文本邮件、
HTML
邮件以及带附件的邮件。
Python
对
SMTP
支持有
smtplib
和
email
两个模块, email负责构造邮件,
smtplib
负责发送邮件。
常见邮箱服务器和端口
163.com:
SMTP
服务器地址
:smtp.163.com
(端口:
25
)
QQ
邮箱:
SMTP
服务器地址:
smtp.qq.com
(端口:
25
)
Foxmail
:
SMTP
服务器地址
:SMTP.foxmail.com
(端口:
25
)
纯文本邮件
一:构建邮件内容
from email.mime.text import MIMEText
from email.header import Header
from email.mime.multipart import MIMEMultipart
from email.mime.text import MIMEText
msg = MIMEText('hello, send by Python...', 'plain', 'utf-8')
第一个参数就是邮件正文
第二个参数是
subtype
,传入
'plain'
表示纯文本,
html
表示
html
,
要用
utf-8
编码保证多语言兼容性。
然后,通过
SMTP
发出去:
二:发送邮件
import smtplib
server = smtplib.SMTP(smtp_server, 25) # SMTP
协议默认端口是
25
server.set_debuglevel(1)
server.login(from_addr, password)
server.sendmail(from_addr, [to_addr], msg.as_string())
from_addr:
邮件发送者地址。
to_addrs:
字符串列表,邮件发送地址。
msg:
发送消息
server.quit()
02.添加收件人和主题
添加主题
邮件没有主题;
收件人的名字没有显示为友好的名字,明明收到了邮件,却提示不在收件人中。
这是因为邮件主题、如何显示发件人、收件人等信息并不是通过
SMTP
协议发送,而是包含在发送
的文本中的,
所以,我们必须把
From
、
To
和
Subject
添加到
MIMEText
中,才是一封完整的邮件:
需要通过
Header
对象进行编码
content = MIMEText('
第二次通过
python
发送邮件
', 'plain', 'utf-8')
content['From']=Header(sender,'utf-8')
content['To']=receiver
content['Subject']=Header('
主题是自动化测试
','utf-8')
发送给多人:
content['To']=receiver #
字符串列表
,
逗号隔开例如 :
'1,2'
发送html形式邮件
如果我们要发送
HTML
邮件,而不是普通的纯文本文件怎么办?方法 很简单,在构造MIMEText
对象时,把
HTML
字符串传进去,再把第二 个参数由plain
变为
html
就可以了:
msg = MIMEText('<html><body><h1>
测试报告
</h1>' +
'<p>send by <a
href="http://localhost:63342/HuaceTestFramework/reports/2020-02-21-
21-08-30-interface-report.html?_ijt=qtb4k1nohtrff8pp1hs79glm5l">
详情
请点击
</a>...</p>' +
'</body></html>', 'html', 'utf-8')
带附件的邮件
from email.mime.multipart import MIMEMultipart
带附件的邮件可以看做包含若干部分的邮件:
文本和各个附件本身
1.
可以构造一个
MIMEMultipart
对象代表邮件本身
2.
然后往里面加上一个
MIMEText
作为邮件正文
3.
再继续往里面加上表示附件
一:添加正文
data = MIMEMultipart()
data.attach(MIMEText('hello', 'plain', 'utf-8')) #
增加邮件正文
data['from'] = Header(sender, 'utf-8')
data['to'] = receiver
data['subject'] = Header('
包含附件
', 'utf-8')
二'''增加附件,'''
#
通过
open
方法打开一个文件,并且
read
(),
att = MIMEText(open(r'./test.html', encoding='utf-8').read())
#
说明该文件以附件形式展示
att["Content-Disposition"] = 'attachment;filename="report.html"'
data.attach(att)
Python连接数据库的目的
1
:清除数据
。自动化测试时候,注册了一个新用户,产生了多余的数据,下次同一个账
号就无法注册了,这种情况怎么办呢?自动化测试都有数据准备和数据清理的操作,如果
因此用例产生了多余数据,就需要清理数据,可以用
Python
连接
Mysql
直接删除多余的数
据就可以了。
2
:进行断言
。自动化测试时,会对某一个测试点的结果进行判断,使用数据库中的数据
来进行判断也是一种常见的断言方式。
环境准备
Python
连接数据库的方法有两种:分别是
PyMySQL
和
mysql.connector
1. PyMySQL
PyMySQL
: 是封装了
MySQL
驱动的
Python
驱动,一个能使
Python
连接到
MySQL
的库
环境要求:
Python version >= 3.4
安装命令:
pip install PyMySQL
DML(数据操纵语言)
pymysql
是利用游标来执行
sql
语句,必须要创建一个游标,并执行
SQL
语句
在
Python
中对数据库进行增删改使用的是事务处理,和查询不一样,这点需要注意,在执
行增删改
SQL
语句后,需要提交事务才能在数据库中完成操作,并且还需添加错误判断,
当执行
SQL
失败后,需要对事务进行回滚。
Python连接数据库
1. 导包
import pymysql
2. 数据库连接设置
conn=pymysql.connect(host,user,passwd,port,db,charset)
3. 生成游标
cur=conn.cursor(cursor=pymysql.cursors.DictCursor)
4. 编写sql
语句
sql='select * from student'
5. 执行sql
语句
cur.excute(sql)
6. 获取数据
data=cur.fetchall()
7. 关闭游标
cur.close()
8. 关闭连接
conn.close()
通过跳板机连接mysql
生产环境中,为了安全起见,大多数的数据库是无法在本地直接访问的,需要先连接跳板机
跳板机是通过密钥连接的,所以需要
ssh_pkey
参数,值是密钥的路径,如果需要通过密码连接,
将该参数换成
ssh_password
即可;
为了安全起见,连接之后再关闭连接,使用
with
语句,如下:
server = SSHTunnelForwarder(
(host_jump, int(port_jump)), #
跳板机的配置
ssh_pkey=ssh_pk_jump,
ssh_username=user_name_jump,
remote_bind_address=(host_mysql, int(port_mysql))) #
数据库服务器的配置
with SSHTunnelForwarder(
(self.ssh_host, 22), #
跳板机(堡垒机)
B
配置
ssh_password=self.ssh_password,
需求:excel表格群发邮件
1.
多个
sheet
表格依次发送所有的邮件
2.
每个邮件的内容不一样
微信搜一搜【程序员阿沐】关注这个文绉绉的程序员,关注后主页点击【领取资料】有我准备的一线大厂面试资料和简历模板,希望大家都能找到心仪的工作,学习是一条时而郁郁寡欢,时而开怀大笑的路,加油。如果你通过努力成功进入到了心仪的公司,一定不要懈怠放松,职场成长和新技术学习一样,不进则退。如果有幸我们江湖再见!