Python自动发送邮件

该博客介绍了一个实习任务,即通过Python实现监控数据库中的SQL执行情况。当执行语句出现错误时,程序会自动将错误信息以邮件形式发送给数据库管理人员。邮件发送模块使用了SMTP服务,而数据库操作部分则使用了PyMySQL库来获取和执行SQL语句。邮件内容包含了异常信息,确保了问题能够及时得到反馈。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

    实习工作中的一个小任务,执行数据库中的sql语句,如果报错,将错误信息通过邮件的形式发送给数据库管理人员。

‘’‘
邮件发送模块
’‘’
import smtplib
from email.mime.text import MIMEText
from email.mime.multipart import MIMEMultipart
from email.mime.image import MIMEImage

class Send_email(object):
    def __init__(self, my_subjects, my_contents):
        # 设置建立通信的服务器信息
        self.email_host = 'stmp.163.com'
        # 设置登录邮箱的用户名和密匙
        self.email_user = '用户名'
        self.email_pass = 'xxxx'   # 密钥,密钥的获取可以百度
        # 发送邮件的邮箱账户
        self.sender = 'xxxxx@163.com'  # 邮箱账号
        # 接收邮件的邮箱账户
        self.receivers = ['xxx@qq.com']  # 接收用户列表,可以为1到多个
        self.my_subjects = my_subjects  # 邮件的主题
        self.my_contents = my_contents   # 邮件内容

    def handle(self):
        # 创建邮件对象
        # 创建一个MIMEMultipart对象,这个对象就相当于一封邮件
        message = MIMEMultipart()
        # 设置发送方
        message['From'] = self.sender
        # 设置接收方
        message['To'] = ';'.join(self.receivers)
        # 设置邮件主题,也就是大标题,它是一个字符串
        message['Subject'] = self.my_subjects

        # 邮件正文设置
        # 文本形式
        content = self.my_contents
        part1 = MIMEText(content, 'plain', 'utf-8')

        # HTML格式
        # 因为HTML格式一般比较长,因此我们用读取文件的方法
        # with open('goldsunC.html', 'r') as f:
        #     content = f.read()
        # part1 = MIMEText(content, 'html', 'utf-8')

        # 将准备好的东西放在容器内
        message.attach(part1)

        # 发送邮件
        # 与服务器建立通信并发送邮件
        try:
            receivers = self.receivers + [self.sender]
            email_stmp = smtplib.SMTP()
            email_stmp.connect('smtp.163.com', 25)  # 请求连接服务器
            email_stmp.login(self.email_user, self.email_pass)  # 登录
            email_stmp.sendmail(self.sender, receivers, message.as_string())  # 发送!
            print('success')
        except smtplib.SMTPException as e:
            print('error', e)

if __name__ == '__main__':
    send_email = Send_email('异常', '异常处理练习!')
    send_email.handle()

    下面是从数据库中获取sql语句,并执行,如果报错则发送邮件

from pymysql import *
import re
from send_email import Send_email

conn1 = connect(host='192.168.1.146', port=3306, user='user', password='pwd', database='Database', charset='utf8')
cursor1 = conn1.cursor()
sql1 = 'select * from CJZQ_QINGXI_SQL'
cursor1.execute(sql1)
results = cursor1.fetchall()
fields = results[0][3:6]
for field in fields:
    if field:
        text = re.findall(r'^.*\n', field)
        try:
            cursor1.execute(field)
            conn1.commit()
        except Exception as e:
            print(e)
            my_emails = Send_email('异常', str(e))
            my_emails.handle()
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值