Source code for fedflow.mail.mail

"""
Mail Entry
============

The interface exposed by the mail package.
"""

__all__ = [
    "Mail"
]

import logging
import os
from email.mime.text import MIMEText
from email.header import Header

from fedflow.config import Config
from fedflow.mail.templates import group_template
from fedflow.mail.send_mail import send_mail


[docs]class Mail(object): """ The entry mail class. All code outside of this package should only use this class to send mail. """ logger = logging.getLogger("fedflow")
[docs] @classmethod def send_group_result(cls, name: str, result: dict) -> None: """ send report of a group. :param name: group name :param result: the result need to be reported. :return: """ html = group_template(name, result) message = MIMEText(html, "html", "utf-8") message["Subject"] = Header("Fedflow %s report" % name, "utf-8") if Config.get_property("smtp.enable"): if send_mail(message): cls.logger.info("send group report mail.") else: cls.logger.error("send group report mail failed.") reports_dir = os.path.join(Config.get_property("workdir"), "reports") os.makedirs(reports_dir, exist_ok=True) filename = os.path.join(reports_dir, "%s.html" % name) with open(filename, "wb") as f: f.write(html.encode("utf-8"))