You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

83 lines
2.8 KiB

# -*- 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}")