SMTP:
通过SMTP来关联其他邮箱
在python中,有一个已经被保留的,smtplib,专门用于处理邮件的库。mail库处理邮件内容的库
QQ邮箱需要在设置页面打开pop3
案例:
1.邮件的主题,寄件人,收件人,邮件正文,附件
2.邮件正文:文本信息,HTML信息,图片内容
3.附件内容:TXT,doc,pic
代码示例:
#场景例如:你这个测试用例跑完了,要发送给一些人的邮箱
#需要导入SMTPLTB库,来进行邮箱的连接
import smtplib
#用于处理邮件内容的库,
from email.mime.text import MIMEText
#处理邮件附件,需要导入MIMEultipart,Header,MIMEBase
from email.mime.multipart import MIMEMultipart
from email.header import Header
from email.mime.base import MIMEBase
#邮箱属性的配置,要去连接的邮箱服务器,使用SMTP协议,格式就是smtp.邮箱URL,如果是163:smtp.163.com
#当前变量都是脚本编写者自定义内容,非python库已经定义好的字段名称
mailserver = 'smtp.qq.com'
#发送人的邮箱,
userName_sendMail ='2433310891@qq.com'
#邮箱发件授权码,例如QQ邮箱在设置中打开pop3时,会给授权码
userName_AuthCode = 'hkwaanmnfgbdecab'
#定义邮件接收者,可以是多个
received_mail = ['3160226077@qq.com','jintao@hexinjingu.com']
#发送一封简单的邮件
#邮件的内容
#支持文本和HTML
#content = '这里是文本信息',这个是邮件内容时文本的写法
#发送一封HTML文本的邮件
content = '''
<p> 这个邮件发给你,有时间可以看下哈,我在代码进行了很多的注释第一个是博客,第二个是教学视频</p>
<p><a href ="https://blog.csdn.net/qq_39204060/article/details/109996940" >第一个是博客,代码进行了很多的注释</a></p>
<p><a href ="https://www.bilibili.com/video/BV1uE411Y79D" >第二个是教学视频</a></p>
'''
#邮件内容的定义,通过MIMEText操作
#创建一个邮件内容类MIMEText的对象email,当前函数中传参写法为固定的格式,第一个字段是邮件内容,第二个字段意思是文本的展示形式,plain代表文本形式,HTML为网页形式,utf-8为编码,因为文本内容中含有汉字,避免出现乱码
email = MIMEText(content,'HTML','utf_8')
#设置邮件对象所需要的属性,左侧的属性['subject']为MIMEText库定义死的写法
#邮件主题就是邮件的标题
email['subject'] = '嘿嘿,这个是一封通过python发送的邮件'
#邮件的发件人,数据调用上面已经配置好的参数
email['From'] = userName_sendMail
#邮件收件人,数据调用上面配置好的参数,写法是MIMEText库已定义的写法,逗号是参照上面收件人定义的字符串,以逗号来进行分割
email['To'] = ','.join(received_mail)
#处理邮件附件
#非图片附件
# att = MIMEBase('applcation','octet-stream')
# att.set_payload(open('诗篇.txt','rb').read())
# att.add_header('Content-Disposition','attachment',filename = Header('诗篇.txt','gbk').encode())
# encoders.encode_base64(att)
# email.attach(att)
#图片附件
#发送邮件
#调用smtp函数,port为邮箱端口号,可以百度搜索获取例如:QQ邮箱SMTP端口
#创建一个对象
smtp = smtplib.SMTP_SSL(mailserver,port= 465)
#对象进行授权,需要发送人的邮箱号和授权码,调用上面配置好的参数
smtp.login(userName_sendMail , userName_AuthCode)
#发送邮件定义好的写法,需要发送人邮箱号,接收人邮箱号,as_string()转换为string类型
smtp.sendmail(userName_sendMail,','.join(received_mail),email.as_string())
#执行完成之后进行退出
smtp.quit()