Last active
April 11, 2021 16:41
-
-
Save carc1n0gen/aa7c9b42572270942fc1ef25a4fa65ed to your computer and use it in GitHub Desktop.
Custom Mailer
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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