import datetime import logging import smtplib from email.mime.text import MIMEText from config.email import ERROR_EMAIL_CONFIG def send_an_error_email(program_name, error_name, error_detail): """ @program_name: 运行的程序名 @error_name: 错误名 @error_detail: 错误的详细信息 @description: 程序出错时发送邮件提醒 """ # SMTP 服务器配置 smtp_server = ERROR_EMAIL_CONFIG['smtp_server'] sender = ERROR_EMAIL_CONFIG['sender'] authorization_code = ERROR_EMAIL_CONFIG['authorization_code'] receivers = ERROR_EMAIL_CONFIG['receivers'] # 获取程序出错的时间 error_time = datetime.datetime.strftime(datetime.datetime.today(), "%Y-%m-%d %H:%M:%S:%f") # 邮件内容 subject = "【程序异常提醒】{name} {date}".format(name=program_name, date=error_time) # 邮件的标题 content = '''

程序运行异常通知

程序:【{program_name}】运行过程中出现异常错误,下面是具体的异常信息,请及时核查处理!

程序异常详细信息
异常简述 {error_name}
异常详情 {error_detail}
'''.format(program_name=program_name, error_name=error_name, error_detail=error_detail) # 邮件的正文部分 # 实例化一个文本对象 massage = MIMEText(content, 'html', 'utf-8') massage['Subject'] = subject # 标题 massage['From'] = sender # 发件人 receivers_str = ','.join(receivers) massage['To'] = receivers_str # 收件人 log = logging.getLogger() try: mail = smtplib.SMTP_SSL(smtp_server, 994) # 连接SMTP服务,默认465和944这里用994 mail.login(sender, authorization_code) # 登录到SMTP服务 mail.sendmail(sender, receivers, massage.as_string()) # 发送邮件 mail.quit() log.info("成功发送了一封邮件到" + receivers_str) except smtplib.SMTPException: log.warning("邮件发送失败!")