# -*- coding: utf-8 -*- import yagmail import config from utils.utils import logger import inspect from datetime import datetime from models.monitor_task_model import get_task, complete async def send_post_mail(task_id, name, message="出现异常"): keyword = "" task = await get_task(task_id) if not task: message = F"不存在的任务ID: {task_id}" else: keyword = task.keyword mail_server = None try: mail_server = yagmail.SMTP(user=config.SMTP_USER, password=config.SMTP_PASSWORD, host=config.SMTP_HOST) except Exception as e: logger.error("[邮件]初始化失败 请检查邮件配置") return to = [] if not config.POST_EMAIL: logger.warn("[邮件]未配置用于接收邮件上报的邮箱地址 邮件上报被取消") return if isinstance(config.POST_EMAIL, str): to.append(config.POST_EMAIL) elif isinstance(config.POST_EMAIL, list): to = config.POST_EMAIL else: logger.warn("[邮件]未配置用于接收邮件上报的邮箱地址 邮件上报被取消") return title = F"HuoSpider上报邮件: {name}数据获取异常" content = F""" 异常任务ID: {task_id} 异常站点: {name} 关键词: {keyword} 异常信息: {message} 上报时间: {datetime.today().strftime("%Y-%m-%d %H:%M:%S")} """ inspect.cleandoc(content) mail_server.send(to, title, content) mail_server.close() logger.info(f"[邮件]任务ID: {task_id} 异常上报邮件发送成功 收件人: {to}") async def test(task_id, name, message="出现异常"): keyword = "测试" mail_server = None try: mail_server = yagmail.SMTP(user=config.SMTP_USER, password=config.SMTP_PASSWORD, host=config.SMTP_HOST) except Exception as e: logger.error("[邮件]初始化失败 请检查邮件配置") return to = [] if not config.POST_EMAIL: logger.warn("[邮件]未配置用于接收邮件上报的邮箱地址 邮件上报被取消") return if isinstance(config.POST_EMAIL, str): to.append(config.POST_EMAIL) elif isinstance(config.POST_EMAIL, list): to = config.POST_EMAIL else: logger.warn("[邮件]未配置用于接收邮件上报的邮箱地址 邮件上报被取消") return title = F"HuoSpider上报邮件: {name}数据获取异常" content = F""" 异常任务ID: {task_id} 异常站点: {name} 关键词: {keyword} 异常信息: {message} 上报时间: {datetime.today().strftime("%Y-%m-%d %H:%M:%S")} """ inspect.cleandoc(content) mail_server.send(to, title, content) mail_server.close() logger.info(f"[邮件]任务ID: {task_id} 异常上报邮件发送成功 收件人: {to}")