From a8f7fb6a8d4c3850edc372bef7db4464cea5cd7d Mon Sep 17 00:00:00 2001 From: jekabskarklins Date: Mon, 20 Jul 2026 15:18:38 +0200 Subject: [PATCH 1/2] feat: add SMTP mail service for development environment --- apps/backend/src/config/dependencyConfigESS.ts | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/apps/backend/src/config/dependencyConfigESS.ts b/apps/backend/src/config/dependencyConfigESS.ts index 9f8d4927e4..bab732de26 100644 --- a/apps/backend/src/config/dependencyConfigESS.ts +++ b/apps/backend/src/config/dependencyConfigESS.ts @@ -1,4 +1,3 @@ -/* eslint-disable @typescript-eslint/no-empty-function */ import 'reflect-metadata'; import { DataAccessUsersAuthorization } from '../auth/DataAccessUsersAuthorization'; @@ -65,6 +64,7 @@ import { configureESSDevelopmentEnvironment } from './ess/configureESSEnvironmen import { configureGraylogLogger } from './ess/configureGrayLogLogger'; import { Tokens } from './Tokens'; import { mapClass, mapValue } from './utils'; +import { SMTPMailService } from '../eventHandlers/MailService/SMTP/SMTPMailService'; mapClass(Tokens.RoleDataSource, PostgresRoleDataSource); mapClass(Tokens.AdminDataSource, PostgresAdminDataSourceWithAutoUpgrade); @@ -130,6 +130,11 @@ mapClass(Tokens.AssetRegistrar, EAMAssetRegistrar); mapClass(Tokens.MailService, SparkPostMailService); +mapValue( + Tokens.MailService, + isDevelopment ? new SMTPMailService() : SparkPostMailService +); + mapValue(Tokens.FapDataColumns, FapDataColumns); mapValue(Tokens.FapDataRow, getDataRow); mapValue(Tokens.PopulateRow, populateRow); From 5efbeee069576b3ea54fa5c299096bc1763733ae Mon Sep 17 00:00:00 2001 From: jekabskarklins Date: Tue, 21 Jul 2026 20:33:51 +0200 Subject: [PATCH 2/2] feat: enhance SMTPMailService to resolve email templates by identifier type --- .../backend/src/config/dependencyConfigESS.ts | 9 +++++---- .../MailService/SMTP/SMTPMailService.ts | 19 +++++++++++++++++-- 2 files changed, 22 insertions(+), 6 deletions(-) diff --git a/apps/backend/src/config/dependencyConfigESS.ts b/apps/backend/src/config/dependencyConfigESS.ts index bab732de26..816e805996 100644 --- a/apps/backend/src/config/dependencyConfigESS.ts +++ b/apps/backend/src/config/dependencyConfigESS.ts @@ -130,10 +130,11 @@ mapClass(Tokens.AssetRegistrar, EAMAssetRegistrar); mapClass(Tokens.MailService, SparkPostMailService); -mapValue( - Tokens.MailService, - isDevelopment ? new SMTPMailService() : SparkPostMailService -); +if (isDevelopment) { + mapValue(Tokens.MailService, new SMTPMailService()); +} else { + mapClass(Tokens.MailService, SparkPostMailService); +} mapValue(Tokens.FapDataColumns, FapDataColumns); mapValue(Tokens.FapDataRow, getDataRow); diff --git a/apps/backend/src/eventHandlers/MailService/SMTP/SMTPMailService.ts b/apps/backend/src/eventHandlers/MailService/SMTP/SMTPMailService.ts index 12933b258a..33a9334d15 100644 --- a/apps/backend/src/eventHandlers/MailService/SMTP/SMTPMailService.ts +++ b/apps/backend/src/eventHandlers/MailService/SMTP/SMTPMailService.ts @@ -105,6 +105,21 @@ export class SMTPMailService extends MailService { ); } + private async resolveEmailTemplate(identifier: string) { + const isNumericIdentifier = /^\d+$/.test(identifier); + + if (isNumericIdentifier) { + const byId = + await this.emailTemplateDataSource.getEmailTemplate(+identifier); + + if (byId) { + return byId; + } + } + + return this.emailTemplateDataSource.getEmailTemplateByName(identifier); + } + private async compileEmailTemplate(options: SendMailOptions): Promise<{ subject: string; body: string; @@ -113,8 +128,8 @@ export class SMTPMailService extends MailService { return { subject: '= ``', body: '' }; } - const emailTemplate = await this.emailTemplateDataSource.getEmailTemplate( - +options.content.template + const emailTemplate = await this.resolveEmailTemplate( + options.content.template ); if (!emailTemplate) {