From 84fffc4b81f977d166268c5c648eb8f00c8a93b7 Mon Sep 17 00:00:00 2001 From: Nikita Yakovlev Date: Tue, 24 Feb 2026 13:02:04 +0300 Subject: [PATCH 1/3] move smtp config to settings --- backend/backlog_app/config.py | 12 ++++++++++-- .../backlog_app/servicies/mailing/email_sender.py | 14 +++++++++++--- backend/config.default.yaml | 6 ++++++ 3 files changed, 27 insertions(+), 5 deletions(-) diff --git a/backend/backlog_app/config.py b/backend/backlog_app/config.py index 9b8c5f3..bf50ae2 100644 --- a/backend/backlog_app/config.py +++ b/backend/backlog_app/config.py @@ -2,7 +2,7 @@ from pathlib import Path from typing import Literal -from pydantic import AmqpDsn, BaseModel, field_validator +from pydantic import AmqpDsn, BaseModel, field_validator, EmailStr from pydantic_settings import ( BaseSettings, PydanticBaseSettingsSource, @@ -36,9 +36,16 @@ class AccessToken(BaseModel): class SuperUser(BaseModel): - email: str + email: EmailStr password: str +class SMTPConfig(BaseModel): + username: EmailStr + password: str + server: str + port: int + use_tls: bool = True + class DataBaseConnection(BaseModel): host: str @@ -118,6 +125,7 @@ def settings_customise_sources( logging: LoggingConfig = LoggingConfig() access_token_db: AccessToken superuser: SuperUser + smtp: SMTPConfig cors_origins: list[str] = ["http://localhost:5173"] diff --git a/backend/backlog_app/servicies/mailing/email_sender.py b/backend/backlog_app/servicies/mailing/email_sender.py index db705f4..7b22ec2 100644 --- a/backend/backlog_app/servicies/mailing/email_sender.py +++ b/backend/backlog_app/servicies/mailing/email_sender.py @@ -3,6 +3,8 @@ import aiosmtplib +from backlog_app.config import settings + async def send_email( recipient: str, @@ -10,9 +12,8 @@ async def send_email( plain_content: str, html_content: str = "", ): - admin_email = "admin@site.com" # todo: перенести в настройки message = MIMEMultipart("alternative") - message["From"] = admin_email + message["From"] = settings.smtp.username message["To"] = recipient message["Subject"] = subject @@ -31,4 +32,11 @@ async def send_email( ) message.attach(html_message) - await aiosmtplib.send(message, hostname="127.0.0.1", port=1025) + await aiosmtplib.send( + message, + hostname=settings.smtp.server, + port=settings.smtp.port, + use_tls=settings.smtp.use_tls, + username=settings.smtp.username, + password=settings.smtp.password, + ) diff --git a/backend/config.default.yaml b/backend/config.default.yaml index 92fb384..19b7f80 100644 --- a/backend/config.default.yaml +++ b/backend/config.default.yaml @@ -4,3 +4,9 @@ backlog: - http://127.0.0.1 logging: log_level_name: INFO + smtp: + username: noreply@site.com + password: noreply + smtp_server: 127.0.0.1 + smtp_port: 1025 + use_tls: False From 7ba107bfa80a0f939b0890f36d0cdfe516542839 Mon Sep 17 00:00:00 2001 From: Nikita Yakovlev Date: Tue, 24 Feb 2026 13:06:36 +0300 Subject: [PATCH 2/3] fix pre-commit config --- .pre-commit-config.yaml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index e8ccb36..e910649 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -14,6 +14,7 @@ repos: - id: black files: ^backend/ args: + - --check - --diff - repo: https://github.com/pycqa/isort @@ -22,4 +23,5 @@ repos: - id: isort files: ^backend/ args: + - --check-only - --diff From 8f84264481226495c20659618b315004bdb881a0 Mon Sep 17 00:00:00 2001 From: Nikita Yakovlev Date: Tue, 24 Feb 2026 13:07:25 +0300 Subject: [PATCH 3/3] lint fix --- backend/backlog_app/config.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/backend/backlog_app/config.py b/backend/backlog_app/config.py index bf50ae2..a6fcc0e 100644 --- a/backend/backlog_app/config.py +++ b/backend/backlog_app/config.py @@ -2,7 +2,7 @@ from pathlib import Path from typing import Literal -from pydantic import AmqpDsn, BaseModel, field_validator, EmailStr +from pydantic import AmqpDsn, BaseModel, EmailStr, field_validator from pydantic_settings import ( BaseSettings, PydanticBaseSettingsSource, @@ -39,6 +39,7 @@ class SuperUser(BaseModel): email: EmailStr password: str + class SMTPConfig(BaseModel): username: EmailStr password: str