首页 > 编程语言 >python 使用smtp发送邮件通知

python 使用smtp发送邮件通知

时间:2022-09-22 16:33:10浏览次数:44  
标签:toEmails python self smtp fromEmail host port 邮件

python 使用SMTP发送邮件通知

1. python版本

python 3.6.8

2. 发送邮件类

import smtplib
import traceback
from email.mime.text import MIMEText

class EmailSend(object):
    '''
    初始化邮件通知帮助类
    host: 主机
    port: 端口
    fromEmail: 发件人邮箱
    fromEmailPwd: 发件人邮箱密码
    toEmails: 收件人,以英文逗号(,)隔开
    isEnableSSL: 是否启用SSL加密
    '''

    def __init__(self, host: str, port: int, fromEmail: str, fromEmailPwd: str, toEmails: str, isEnableSSL: bool = False) -> None:
        self.host = host
        self.port = port
        self.fromEmail = fromEmail
        self.fromEmailPwd = fromEmailPwd
        self.toEmails = toEmails
        self.isEnableSSL = isEnableSSL

    def send(self, subject, content):
        '''
        发送邮件
        subject: 邮件主题
        content: 邮件正文
        '''

        msg = MIMEText(content, 'plain', 'utf-8')
        msg['From'] = self.fromEmail
        msg['To'] = ','.join(self.toEmails)
        msg['Subject'] = subject
        try:
            if self.isEnableSSL:
                smtpobj = smtplib.SMTP_SSL(self.host)
            else:
                smtpobj = smtplib.SMTP(self.host)

            # 建立连接
            smtpobj.connect(self.host, self.port)
            # 登录
            smtpobj.login(self.fromEmail, self.fromEmailPwd)
            # 发送邮件
            smtpobj.sendmail(self.fromEmail, self.toEmails, msg.as_string())
            return True, None
        except:
            return False, str(traceback.format_exc())
        finally:
            smtpobj.quit()

测试结果

def sendEmailTest():
    host = 'smt.163.com'
    port = 465
    fromEmail = 'XXXX@163.com'
    portPwd = 'XXXXXXXXX' # 网易和QQ使用的是授权码
    toEmails = 'user1@163.com,user2@163.com'
    emailHelper = EmailSend(host, port, fromEmail, portPwd, toEmails, True)
    emailHelper.send('邮件测试主题', '这是一封测试邮件')
    
{True, None}

标签:toEmails,python,self,smtp,fromEmail,host,port,邮件
From: https://www.cnblogs.com/dennisdong/p/16719560.html

相关文章

  • python进阶——装饰器
    万物皆对象介绍装饰器之前,我们需要理解一个概念:在介绍装饰器前,我们需要理解一个概念:在Python开发中,一切皆对象。什么意思呢?就是我们在开发中,无论是定义的变量(数字、字......
  • Python3交叉编译步骤(二)-三方库的交叉编译
    一.项目场景在cortex-A9主板上运行python3,能够使用常用的三方库二.配置主机环境:ubuntu-18.04-x86_64(虚拟机)交叉编译链:arm-linux-gnueabihf-gcc开发板:cortex-A9(armv7l)三.......
  • python解释器下载与安装+配置环境变量
    一.python解释器的下载与安装......
  • Python 简介
    ###本简介浓缩了一些基本概念,并且随着学习会不断增加跟新### Python是一种解释型的面向对象的语言。由GuidoVanRossum于1989年发明,1991年公布。网站www.python.o......
  • Pycharm的安装并且连接已有的Python环境实现自由编译(附中文配置)|并通过Pycharm实现增加
    Python环境的配置 通过python的官方网站:python.org即可进入python的官网-->选择Downloads即可进入选择版本的界面,在界面中选择自己想要下载的版本即可,下载好之后在安装界......
  • python解释器
    计算机五大组成部分1、控制器控制计算机各个硬件工作2、运算器数学运算、逻辑运算控制器+运算器=cpu(中央处理器)3、存储器 存储数据 内存:存在缓存中,断电数据丢失 ......
  • 统计邮件收发数量
     #获取前一天Exchange收发邮件量$Mail_Servers="mb11,mb12,mb13,mb14"$Mail_Servers_array=$Mail_Servers-split","$Count_send=$null$Count_receive=$n......
  • python系列——常用系统模块
    常用系统模块os:与操作系统交互os.name/os.sep/os.linesep.:系统名称/系统路径分隔符/系统换行符os.mkdir()/os.makedirs():建立目录/建立多级目录os.getenv("PAT......
  • python 列表
    列表(list),是一个有序且可变的容器,在里面可以存放多个不同类型的元素。1.定义不可变类型:字符串、布尔、整型(已最小,内部数据无法进行修改)可变类型:列表(内部数据元素......
  • Python 2
    实例一:print("今有物不知其数,三三数之剩二,五五数之剩三,七七数之剩二,问几何?\n")#输入一个数number=int(input("请输入您认为符合条件的数:"))#判断是否符合条件ifnumber......