Source code for clink.service.mail.smtp_sv

from smtplib import SMTP
from email.mime.text import MIMEText

from clink.com import stamp
from clink.type.com import Service
from clink.type import AppConf, AuthConf


@stamp(AppConf, AuthConf)
[docs]class SmtpSv(Service): ''' Send mail message on SMTP ''' def __init__(self, app_conf, auth_conf): ''' :param AppConf app_conf: :param AuthConf auth_conf: ''' self._app_conf = app_conf self._auth_conf = auth_conf self._from = '{} <{}>'.format( self._app_conf.name, self._auth_conf.root_email ) self._smtp = self._connect()
[docs] def send(self, dest_email, subject, text_body): ''' Send plain text message :param str dest_email: :param str subject: :param str text_body: ''' msg = MIMEText(text_body) msg['To'] = dest_email msg['Subject'] = subject msg['From'] = self._from self._smtp.sendmail( self._auth_conf.root_email, dest_email, msg.as_string() )
def _connect(self): port = self._auth_conf.root_email_server_port smtp = SMTP(self._auth_conf.root_email_server, port) smtp.ehlo() smtp.starttls() smtp.login(self._auth_conf.root_email, self._auth_conf.root_email_pwd) return smtp