Source code for fedflow.mail.send_mail

"""
Send mail core methods
======================

Some methods used inside the mail package to actually send mail.
"""

__all__ = [
    "send_mail"
]

import getpass
import smtplib
from email.mime.text import MIMEText
from email.header import Header
from email.utils import formataddr

from fedflow.config import Config


def __format_addr(name, addr):
    return formataddr((Header(name, "utf-8").encode(), addr))


[docs]def send_mail(message: MIMEText): """ Send ``message`` to specify email address. :param message: the message to be sent. :return: """ try: server_host = Config.get_property("smtp.server-host") server_port = Config.get_property("smtp.server-port") user = Config.get_property("smtp.user") password = Config.get_property("smtp.password") receiver = Config.get_property("smtp.receiver") if None in [server_host, server_port, user, password, receiver] or \ "" in [server_host, server_port, user, password, receiver]: return True send_from = __format_addr("noreply", user) send_to = __format_addr(getpass.getuser(), receiver) message["From"] = send_from message["To"] = send_to smtp = smtplib.SMTP(server_host, server_port) smtp.login(user, password) smtp.sendmail(user, [receiver, ], message.as_string()) smtp.quit() return True except Exception as e: print(e)