Skip to content

Instantly share code, notes, and snippets.

@carc1n0gen
Last active April 11, 2021 16:41
Show Gist options
  • Save carc1n0gen/aa7c9b42572270942fc1ef25a4fa65ed to your computer and use it in GitHub Desktop.
Save carc1n0gen/aa7c9b42572270942fc1ef25a4fa65ed to your computer and use it in GitHub Desktop.
Custom Mailer
import smtplib
from email.message import EmailMessage
from flask import g, current_app
class Mailer():
def __init__(self, smtp_host=None, smtp_port=None, username=None,
password=None):
self._smtp_host = smtp_host
self._smtp_port = smtp_port
self._username = username
self._password = password
def send(self, subject, to, sender, msg_plain, msg_html=None, headers={}):
msg = EmailMessage()
msg.set_content(msg_plain)
msg.add_alternative(msg_html, subtype='html')
msg['Subject'] = subject
msg['From'] = sender
msg['To'] = to
for k, v in headers.items():
msg.add_header(k, v)
server = smtplib.SMTP_SSL(self._smtp_host, self._smtp_port)
server.ehlo()
server.login(self._username, self._password)
server.send_message(msg)
server.close()
def get_mailer():
if 'mailer' not in g:
mailer = Mailer(
smtp_host=current_app.config.get('MAIL_SMTP_HOST'),
smtp_port=current_app.config.get('MAIL_SMTP_PORT'),
username=current_app.config.get('MAIL_USERNAME'),
password=current_app.config.get('MAIL_PASSWORD')
)
g.mailer = mailer
return g.mailer
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment