首页 > 其他分享 >使用内置模块email发送邮件的方法

使用内置模块email发送邮件的方法

时间:2024-06-21 09:55:21浏览次数:14  
标签:__ 内置 cc self smtp 模块 message email

import smtplib
from email.mime.text import MIMEText
from email.header import Header
from email.utils import formataddr
from utils.common_logger import logger


class EmailSender:
    def __init__(self, smtp_server='smtp的server地址'):
        self.smtp_server = smtp_server

    def send_mail(self, to, cc, subject, body, importance=None):
        # 创建 MIMEText 对象
        sender = '发送人邮箱'
        message = MIMEText(body, "html", 'utf-8')
        message['From'] = formataddr((str(Header('邮件标题', 'utf-8')), sender))
        message['To'] = ", ".join(to)
        message['Cc'] = ", ".join(cc)
        message['Subject'] = Header(subject, 'utf-8')

        # 如果配置了 importance,则设置邮件的重要性
        if importance:
            message['Importance'] = importance

        # 合并收件人和抄送人列表
        all_recipients = to + cc

        try:
            # 连接到 SMTP 服务器并发送邮件
            smtp_obj = smtplib.SMTP(self.smtp_server)
            smtp_obj.sendmail(sender, all_recipients, message.as_string())
            print("Email sent successfully!")
        except smtplib.SMTPException as e:
            logger.error('邮件发送失败了,原因为:{}'.format(e))

    def code_check_in_style(self, to, cc):
        subject = '邮件标题'
        body = """
            <html>
                <body>
                   书写你的邮件内容
                </body>
            </html>
            """
        self.send_mail(to, cc, subject, body, importance='High')


# 使用示例
if __name__ == "__main__":
    to = ['收件人邮箱']
    cc = ['抄送人邮箱']

    email_sender = EmailSender()
    email_sender.code_check_in_style(to, cc)

标签:__,内置,cc,self,smtp,模块,message,email
From: https://www.cnblogs.com/wellplayed/p/18259945

相关文章

  • 序列化和反序列化pickle和json 模块
    importpicklehello='helloworld'data=pickle.dumps(hello)#pickle.dumps把任意对象序列化成一个bytes(字节数)print(data)data1=pickle.loads(data)#pickle.loads将字节数反序列化print(data1)importjsondata={'hello':123,'nihao':'word&......
  • 【Python日志模块全面指南】:记录每一行代码的呼吸,掌握应用程序的脉搏
    文章目录......
  • hashlib加密模块
    hashlib加密模块importhashlibmd5=hashlib.md5("你好".encode("utf-8"))#实例化把类的功能赋值给变量print(md5.hexdigest())md5.update('世界'.encode("utf-8"))print(md5.hexdigest(),len(md5.hexdigest()))sha256算法h=hashlib.sha256(......
  • 【YOLOv8改进】CAFM(Convolution and Attention Fusion Module):卷积和注意力融合模块
    摘要摘要——高光谱图像(HSI)去噪对于高光谱数据的有效分析和解释至关重要。然而,同时建模全局和局部特征以增强HSI去噪的研究却很少。在本文中,我们提出了一种混合卷积和注意力网络(HCANet),该网络结合了卷积神经网络(CNN)和Transformers的优势。为了增强全局和局部特征的建模,我们设计了......
  • Vuex模块化
    创建命名空间mian.jssrc/store/index.jssrc/store/getters.jssrc/store/modules各自管理仓库src/store/modules/testVuexModules.js命名空间模块组件内提交与获取Vuex的值:1.异步操作this.$store.dispatch2.同步操作this.$store.commit创建命名空间mian.jsim......
  • 02.VisionMaster 机器视觉快速匹配模块
    快速匹配模块,常用工具工具栏:定位-》快速匹配  用于快速查找形状相似的目标参数设置:基本参数:主要使用ROI区域设置,ROI区域设置可以减小图像查找范围,提高效率。如有需要可以手动去绘制一下。如果你就是要在全图中查找那可以不设置。......
  • Arduino平台软硬件原理及使用——电位器模块的使用
    文章目录一、电位器工作原理二、电位器与滑动变阻器的异同三、电位器模块在Arduino中的使用一、电位器工作原理上图为市面上常见的电位器元件实物图,其结构及封装根据不同的应用场景也有着不同,但其原理及本质基本一致。电位器是具有三个引出端、阻值可按某种变化规......
  • Pointnet++改进即插即用系列:全网首发FastKAN|即插即用,提升特征提取模块性能
    简介:1.该教程提供大量的首发改进的方式,降低上手难度,多种结构改进,助力寻找创新点!2.本篇文章对Pointnet++特征提取模块进行改进,加入FastKAN,提升性能。3.专栏持续更新,紧随最新的研究内容。目录1.理论介绍2.修改步骤2.1步骤一     2.2步骤二     2.3步......
  • 485总线8路4~20mA模拟量采集模块DAM3158A电压电流信号可同时采集
    阿尔泰科技485总线模拟量采集模块DAM3158A电压电流信号采集简要介绍:     阿尔泰科技DAM3158A/3158系列为8路模拟量输入,RS485通讯接口,带有标准ModbusRTU协议。可方便链接:组态王、力控、易控、MCGS等组态软件同时也可以和昆仑通态、威纶通等触摸屏及无线DTU一起使......
  • BOSHIDA DC/AC电源模块:为通信设备提供稳定的电力供应
    BOSHIDADC/AC电源模块:为通信设备提供稳定的电力供应在现代通信系统中,稳定可靠的电力供应是确保信息传输连续性和服务质量的关键因素之一。DC/AC电源模块作为通信设备能源管理的核心组件,扮演着至关重要的角色。它不仅负责将输入的直流电(DC)转换为交流电(AC),以满足不同通信设备的供电......