55 lines
1.7 KiB
Python
55 lines
1.7 KiB
Python
from mailer import Mailer
|
|
from mailer import Message
|
|
from website.config.logger import log
|
|
|
|
class sendmail:
|
|
config = 'localhost'
|
|
charset = 'utf-8'
|
|
subject_prefix = ''
|
|
|
|
@classmethod
|
|
def set_server(cls, config, charset='utf-8'):
|
|
cls.config = config
|
|
|
|
def __call__(self, **args):
|
|
return self
|
|
|
|
def template(self, path, params=None):
|
|
with open(path) as fp:
|
|
self.body = fp.read()
|
|
self.body.format(**params)
|
|
|
|
def send(self, from_address, to_address, subject, body=None, html=True):
|
|
try:
|
|
message = Message(
|
|
From=from_address,
|
|
To=to_address,
|
|
RTo=from_address,
|
|
charset=self.charset
|
|
)
|
|
|
|
if body is None:
|
|
body = ''
|
|
self.body = body
|
|
|
|
message.Subject = "%s - %s" % (self.subject_prefix, subject)
|
|
message.Html = self.body
|
|
message.Body = self.body
|
|
except Exception as e:
|
|
log.exception('[scaffold_mailer] - Failed to create message object for mailer')
|
|
return False
|
|
|
|
try:
|
|
sender = Mailer(
|
|
host=self.config.get('host'),
|
|
port=self.config.get('port'),
|
|
use_tls=self.config.get('use_tls', False),
|
|
use_ssl=True,
|
|
usr=self.config.get('username'),
|
|
pwd=self.config.get('password'))
|
|
sender.send(message)
|
|
except Exception as e:
|
|
log.exception('[scaffold_mailer] - Failed to connect to smtp sever and send message with subject: %s' % message.Subject)
|
|
return False
|
|
return True
|