Python3 SMTP发送邮件(包括HTML附件,及HTML文本内容)

Python3 SMTP发送邮件(包括发送附件,或HTML文本内容)

HTML附件模式

#-*- coding:utf-8 -*-
"""
======================
@author:婵潺细语
@time:2019/10/8:5:17 下午
======================
"""

import os
import smtplib  #加载smtplib模块
from email.mime.image import MIMEImage
from email.mime.multipart import MIMEMultipart
from email.mime.text import MIMEText
from email.utils import formataddr, formatdate

class Send_Email():

    def send_email(self,report_path):
        """
            to_list:发给谁
            sub:主题
            content:内容
            send_mail("[email protected]","sub","content")
        """
		‘’‘第三方 SMTP 服务’‘’
        mail_host = 'smtp.163.com'  	 # 设置服务器
        mail_port = 25          		 # 25 为 SMTP 端口号
        to_list = ['xxxxxx.com']    	 # 接收邮件,可设置为你的QQ邮箱或者其他邮箱

        mail_user = '[email protected]'    # 用户名
        mail_pass = 'password'   		 # 密码
 
        with open(report_path, 'rb') as file:
            mail_body = file.read()
            me = "[email protected]"
            text = MIMEText(mail_body, 'html', 'utf-8')
  			‘’‘创建一个带附件的实例’‘’
            msg = MIMEMultipart('mixed')
		 	‘’‘三个参数:第一个为文本内容,第二个 plain 设置文本格式,第三个 utf-8 设置编码‘’‘
            msg.attach(MIMEText('Hi,all!附件是接口自动化测试报告,请查收,自动发送,无需回复~','plain', 'utf-8'))
            text.add_header("Content-Disposition", "attachment", filename=("gbk", "", "接口自动化测试报告.html"))
            msg.attach(text)

        msg['Subject'] = u'接口自动化测试报告'			# 邮件的主题,也可以说是标题
        msg['From'] = me							# 括号里的对应发件人邮箱昵称、发件人邮箱账号
        msg['To'] = ";".join(to_list)				# 括号里的对应收件人邮箱昵称、收件人邮箱账号

        try:
            s = smtplib.SMTP(mail_host, mail_port)			# 发件人邮箱中的SMTP服务器,端口
            s.login(mail_user, mail_pass)					# 括号中对应的是发件人邮箱账号、邮箱密码
            s.sendmail(me, to_list, msg.as_string())		# 括号中对应的是发件人邮箱账号、收件人邮箱账号、发送邮件
            s.close()										# 关闭连接
            print("邮件发送成功", to_list)
            return True
        except Exception as e:								# 如果 try 中的语句没有执行,则会执行下面的 ret=False
            print(e)
            return False

Send_Email().send_email(  '接口自动化测试报告.html')

在这里插入图片描述

HTML文本内容

class Send_Email():

    def send_email(self,report_path):
        """
            to_list:发给谁
            sub:主题
            content:内容
            send_mail("[email protected]","sub","content")
        """
		"""第三方 SMTP 服务"""
        mail_host = 'smtp.163.com'  	 # 设置服务器
        mail_port = 25          		 # 25 为 SMTP 端口号
        to_list = ['xxxxxx.com']    	 # 接收邮件,可设置为你的QQ邮箱或者其他邮箱

        mail_user = '[email protected]'    # 用户名
        mail_pass = 'password'   	   	 # 密码
 
        with open(report_path, 'rb') as file:
            mail_body = file.read()
            me = "[email protected]"
            text = MIMEText(mail_body, 'html', 'utf-8')
			"""创建一个带附件的实例"""
            msg = MIMEMultipart('mixed')
            msg.attach(text)

        msg['Subject'] = u'接口自动化测试报告'			# 邮件的主题,也可以说是标题
        msg['From'] = me							# 括号里的对应发件人邮箱昵称、发件人邮箱账号
        msg['To'] = ";".join(to_list)				# 括号里的对应收件人邮箱昵称、收件人邮箱账号

        try:
            s = smtplib.SMTP(mail_host, mail_port)			# 发件人邮箱中的SMTP服务器,端口
            s.login(mail_user, mail_pass)					# 括号中对应的是发件人邮箱账号、邮箱密码
            s.sendmail(me, to_list, msg.as_string())		# 括号中对应的是发件人邮箱账号、收件人邮箱账号、发送邮件
            s.close()										# 关闭连接
            print("邮件发送成功", to_list)
            return True
        except Exception as e:								# 如果 try 中的语句没有执行,则会执行下面的 ret=False
            print(e)
            return False

Send_Email().send_email(  '接口自动化测试报告.html')

在这里插入图片描述

使用第三方 SMTP 服务发送

这里使用了 QQ 邮箱(你也可以使用 163,Gmail等)的 SMTP 服务,需要做以下配置:

在这里插入图片描述QQ 邮箱通过生成授权码来设置密码:
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/weixin_45743420/article/details/102534805
今日推荐