【Python】自动发送邮件


一、效果

二、代码

可直接复制进行调用(修改main里对应参数即可)

#!/usr/bin/env python
# -*- coding: utf-8 -*-

"""
@Time    :2022/2/11 11:05
@Author  :
@File    :myemail.py
@Version :1.0
@Function:
"""
import datetime
import smtplib
from email.mime.text import MIMEText
from email.utils import formataddr


class MyEmail:
    def __init__(self):
        self.sender = ''  # 发件人邮箱账号
        self.pwd = ''  # 发件人邮箱的授权码
        self.to_user = []  # 收件人邮箱账号

    def send(self, title, content):
        """
        发送邮件
        :param title: 邮件标题
        :param content: 邮件内容
        :return: True-发送成功;False-发送失败
        """
        is_success = True
        try:
            for user in self.to_user:
                msg = MIMEText(content, 'plain', 'utf-8')
                msg['From'] = formataddr(["AlarmRobot", self.sender])  # 发件人邮箱昵称、账号
                msg['To'] = formataddr(["昵称", user])  # 收件人昵称、账号
                msg['Subject'] = title  # 邮件的主题,标题
                server = smtplib.SMTP_SSL("smtp.qq.com", 465)  # 发件人邮箱中的SMTP服务器,端口是25
                server.login(self.sender, self.pwd)  # 发件人邮箱账号、授权码
                server.sendmail(self.sender, [user, ], msg.as_string())  # 发件人账号、收件人账号、发送内容
            server.quit()  # 关闭连接
        except Exception as e:
            is_success = False
        return is_success


if __name__ == '__main__':
    mail = MyEmail()
    ''' 初始化 '''
    mail.sender = ''  # 发件人邮箱账号
    mail.pwd = ''  # 发件人邮箱的授权码(获取方法见三)
    ''' 邮件信息 '''
    mail.to_user.append('')  # 收件人邮箱账号
    alarm_title = '告警'  # 邮件标题
    alarm_text = f"{datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S')}\r\n注意:温度过高(40C°)"  # 邮件内容
    result = mail.send(alarm_title, alarm_text)

    if result:
        print("邮件发送成功")
    else:
        print("邮件发送失败")

三、获取邮箱授权码

以QQ邮箱为例