python实现自动发邮件功能

终于到这里了,在我们执行完自动化脚本后生成测试报告文件,并且将测试报告文件自动打包后,后面就需要将测试报告压缩包发送出去,网上呢可以关于python实现自动发送邮件的文章很多,这里博主要吐槽一下其实绝大多数都是错的,引人入坑哈哈哈哈,

python有两个内置库,smtplib和email,能够实现邮件功能,smtplib库负责发送邮件,emali负责构建邮件内容,我们在发送邮件时需要遵从SMTP协议,python内置对SMTP可以支持发送纯文本文件,HTML格式邮件和带有附件的邮件,其实我们平时在使用过程中也大概只会用到这些功能。

from email.mime.text import MIMEText    #构造文本
from email.mime.multipart import MIMEMultipart   #负责将多个对象集合起来
import smtplib
from email.header import Header


class Send_mail():
    def sendmail(self):
        catlog = '定义传送附件地址'
        smtpserver = 'smtp.qq.com'    #定义smtp服务器这里使用的是qq邮箱
        user = '******@qq.com'    #发送邮箱
        # 发送邮箱
        # sender = '*****@qq.com'
        mail_receivers = '******'    #发送邮箱授权码,具体这么获取博主后面会详细介绍
        # 接受邮箱
        receiver = '********@qq.com'
        # 创建一个带附件的实例
        message = MIMEMultipart()
        message['From'] = "sender_name<*****@qq.com>"   #发件人信息
        message['To'] = "receiver_1_name<*****@qq.com>"   #收件人信息
        subject = 'Python fhsy test'   #邮件标题
        message['Subject'] = Header(subject, 'utf-8')
        # 邮件正文内容
        message.attach(MIMEText('这是测试Python发送附件功能....', 'plain', 'utf-8'))
        # 构造附件1,传送当前目录下的zip文件
        att1 = MIMEText(open(catlog ,'rb').read(), 'base64', 'utf-8')
        att1['Content-Type'] = 'application/octet-stream'
        # 这里的filename可以任意写,写什么名字 邮件中就显示什么名字
        att1['Content-Disposition'] = 'attachment;filename="casehtml.zip"'  #发送附件的后缀类型
        message.attach(att1)

        smtp = smtplib.SMTP()
        smtp.connect(smtpserver,25) #传入发件人的域名和端口
        smtp.login(user,mail_receivers)  #登录邮箱传入用户名与授权码
        smtp.sendmail(user, receiver, message.as_string())  #发送邮件,参数:发件人地址、收件人地址、将邮件格式设置为str
        print('邮件发送成功')
        smtp.quit()  #关闭smtp对象

如何设置邮箱授权码呢,这里以qq邮箱为例。

1.打开邮件,点击设置按钮。

2.点击账户,下翻到POP3/IMAP/SMTP/Exchange/CardDAV/CalDAV服务这里。

 3.点击开启POP3/SMTP服务

4.点击后会弹出验证保密,根据提示发送信息即可,发送完后别忘了点击已发送啊,最后页面就会展示授权码了。

 

猜你喜欢

转载自blog.csdn.net/HUJIANLAILE/article/details/112391232