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())