| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253 |
- from email.mime.text import MIMEText
- import logging
- import smtplib
- from .wechat import WeChat
- class Sender:
- def __init__(self, smtp_options=None, wechat_options=None) -> None:
- self.smtp = None
- self.wechat = None
- if smtp_options:
- try:
- self.__init_smtp(**smtp_options)
- except Exception as e:
- logging.exception('smtp login failed', exc_info=e)
- if wechat_options:
- try:
- self.wechat = WeChat(**wechat_options)
- except Exception as e:
- logging.exception('wechat login failed', exc_info=e)
-
- def __init_smtp(self, server, port, user, password, sender):
- self.smtp = smtplib.SMTP_SSL(server, port)
- self.smtp.login(user, password)
- self.smtp_from = sender
- logging.info('smtp login successful')
-
- def send_mail(self, to, text, subject=None):
- if not self.smtp: return
- msg = MIMEText(text, 'plain', 'utf-8')
- if subject:
- msg['Subject'] = subject
- msg['From'] = self.smtp_from
- msg['To'] = to
- try:
- self.smtp.sendmail(self.smtp.user, to, msg.as_bytes())
- logging.info('send mail successful')
- except Exception as e:
- logging.exception('send mail failed', exc_info=e)
- def send_wechat(self, touser, msg):
- if not self.wechat: return
- try:
- self.wechat.send(touser, msg)
- logging.info('send wechat successful')
- except Exception as e:
- logging.exception('send wechat failed', exc_info=e)
-
- def send(self, msg, subject=None, mail=None, wechat=None, phone=None):
- if mail:
- self.send_mail(mail, msg, subject)
- if wechat:
- self.send_wechat(wechat, msg)
|