66 lines
2.1 KiB
Python
66 lines
2.1 KiB
Python
from flask import Flask
|
|
import os, smtplib, ssl
|
|
from email.message import EmailMessage
|
|
|
|
|
|
app = Flask( 'pywallter' )
|
|
app.config.from_pyfile('config.py')
|
|
|
|
|
|
|
|
class Mailer:
|
|
|
|
def __init__(self):
|
|
self._smtp_server = app.config['SMTP_SERVER']
|
|
self._smtp_port = app.config['SMTP_PORT']
|
|
self._smtp_user = app.config['SMTP_USER']
|
|
self._smtp_passwd = app.config['SMTP_PASSWD']
|
|
self._sender_address = app.config['SENDER_ADDRESS']
|
|
|
|
|
|
def get_smtp_conf(self):
|
|
print ("Serveur SMTP: _smtp_server")
|
|
|
|
return self._smtp_server
|
|
|
|
def send_email(self, receiver_email, subject, message):
|
|
|
|
mail = EmailMessage()
|
|
mail['Subject'] = subject
|
|
mail['From'] = self._sender_address
|
|
mail['To'] = receiver_email
|
|
mail.set_content(message)
|
|
|
|
match self._smtp_port:
|
|
case "465":
|
|
self._send_ssl_mail(receiver_email, mail)
|
|
case "587":
|
|
self._send_starttls_mail(receiver_email, mail)
|
|
case "25":
|
|
with smtplib.SMTP(self._smtp_server, self._smtp_port) as server:
|
|
server.login(self._smtp_user, self._smtp_password)
|
|
server.sendmail(self._sender_address, receiver_email, mail.as_string())
|
|
case _:
|
|
print ("There are problem with mail port configuration ")
|
|
|
|
|
|
def _send_starttls_mail(self, receiver_email, mail):
|
|
|
|
context = ssl.create_default_context()
|
|
with smtplib.SMTP(self._smtp_server, self._smtp_port) as server:
|
|
server.ehlo() # Can be omitted
|
|
server.starttls(context=context)
|
|
server.ehlo() # Can be omitted
|
|
server.login(self._smtp_user, self._smtp_passwd)
|
|
server.sendmail(self._sender_address, receiver_email, mail.as_string())
|
|
|
|
|
|
|
|
def _send_ssl_mail(receiver_email, mail):
|
|
|
|
context = ssl.create_default_context()
|
|
with smtplib.SMTP(self._smtp_server, self._smtp_port) as server:
|
|
|
|
server.login(sender_email, password)
|
|
server.sendmail(self._sender_address, receiver_email, mail.as_string())
|