mirror of
https://github.com/mealie-recipes/mealie.git
synced 2025-12-11 04:45:22 -05:00
feat: extend email support for SSL/No Auth Email Support (#1235)
* Changes Settings to use new SMTP_AUTH_STRATEGY variable in place of SMTP_TLS with transition support #1187 * Wires up default email client to use ssl or tls authentication if enabled in settings * Updates the docs * Update template file * remove SMTP_TLS and use staticmethod for validate * consolidate test cases with params Co-authored-by: Hayden <64056131+hay-kot@users.noreply.github.com>
This commit is contained in:
@@ -68,23 +68,39 @@ class AppSettings(BaseSettings):
|
||||
SMTP_HOST: Optional[str]
|
||||
SMTP_PORT: Optional[str] = "587"
|
||||
SMTP_FROM_NAME: Optional[str] = "Mealie"
|
||||
SMTP_TLS: Optional[bool] = True
|
||||
SMTP_FROM_EMAIL: Optional[str]
|
||||
SMTP_USER: Optional[str]
|
||||
SMTP_PASSWORD: Optional[str]
|
||||
SMTP_AUTH_STRATEGY: Optional[str] = "TLS" # Options: 'TLS', 'SSL', 'NONE'
|
||||
|
||||
@property
|
||||
def SMTP_ENABLE(self) -> bool:
|
||||
"""Validates all SMTP variables are set"""
|
||||
required = {
|
||||
return AppSettings.validate_smtp(
|
||||
self.SMTP_HOST,
|
||||
self.SMTP_PORT,
|
||||
self.SMTP_FROM_NAME,
|
||||
self.SMTP_TLS,
|
||||
self.SMTP_FROM_EMAIL,
|
||||
self.SMTP_AUTH_STRATEGY,
|
||||
self.SMTP_USER,
|
||||
self.SMTP_PASSWORD,
|
||||
}
|
||||
)
|
||||
|
||||
@staticmethod
|
||||
def validate_smtp(
|
||||
host: str,
|
||||
port: str,
|
||||
from_name: str,
|
||||
from_email: str,
|
||||
strategy: str,
|
||||
user: str | None = None,
|
||||
password: str | None = None,
|
||||
) -> bool:
|
||||
"""Validates all SMTP variables are set"""
|
||||
required = {host, port, from_name, from_email, strategy}
|
||||
|
||||
if strategy.upper() in {"TLS", "SSL"}:
|
||||
required.add(user)
|
||||
required.add(password)
|
||||
|
||||
return "" not in required and None not in required
|
||||
|
||||
|
||||
@@ -24,8 +24,10 @@ class DefaultEmailSender(ABCEmailSender, BaseService):
|
||||
)
|
||||
|
||||
smtp_options: dict[str, str | bool] = {"host": self.settings.SMTP_HOST, "port": self.settings.SMTP_PORT}
|
||||
if self.settings.SMTP_TLS:
|
||||
if self.settings.SMTP_AUTH_STRATEGY.upper() == "TLS":
|
||||
smtp_options["tls"] = True
|
||||
if self.settings.SMTP_AUTH_STRATEGY.upper() == "SSL":
|
||||
smtp_options["ssl"] = True
|
||||
if self.settings.SMTP_USER:
|
||||
smtp_options["user"] = self.settings.SMTP_USER
|
||||
if self.settings.SMTP_PASSWORD:
|
||||
|
||||
Reference in New Issue
Block a user