From 915f688115f11f27e1fc0f68cbb2bb4b1f4cb682 Mon Sep 17 00:00:00 2001 From: Hakan Shehu Date: Mon, 28 Apr 2025 19:40:18 +0200 Subject: [PATCH] Make SMTP service optional --- apps/server/src/lib/configuration.ts | 2 ++ apps/server/src/services/email-service.ts | 11 ++++++++--- 2 files changed, 10 insertions(+), 3 deletions(-) diff --git a/apps/server/src/lib/configuration.ts b/apps/server/src/lib/configuration.ts index d8acd6f7..c5b6103e 100644 --- a/apps/server/src/lib/configuration.ts +++ b/apps/server/src/lib/configuration.ts @@ -63,6 +63,7 @@ export interface SmtpConfiguration { port: number; user: string; password: string; + secure: boolean; from: { email: string; name: string; @@ -200,6 +201,7 @@ export const configuration: Configuration = { smtp: { host: getOptionalEnv('SMTP_HOST') || '', port: parseInt(getOptionalEnv('SMTP_PORT') || '587'), + secure: getOptionalEnv('SMTP_SECURE') === 'true', user: getOptionalEnv('SMTP_USER') || '', password: getOptionalEnv('SMTP_PASSWORD') || '', from: { diff --git a/apps/server/src/services/email-service.ts b/apps/server/src/services/email-service.ts index c88a921e..79998420 100644 --- a/apps/server/src/services/email-service.ts +++ b/apps/server/src/services/email-service.ts @@ -1,4 +1,5 @@ import nodemailer from 'nodemailer'; +import { createDebugger } from '@colanode/core'; import { configuration } from '@/lib/configuration'; @@ -9,6 +10,8 @@ interface EmailMessage { html?: string; } +const debug = createDebugger('server:service:email'); + class EmailService { private transporter: nodemailer.Transporter | undefined; @@ -23,13 +26,14 @@ class EmailService { !configuration.smtp.from.email || !configuration.smtp.from.name ) { - throw new Error('SMTP configuration is missing'); + debug('SMTP configuration is not set, skipping initialization'); + return; } this.transporter = nodemailer.createTransport({ host: configuration.smtp.host, port: configuration.smtp.port, - secure: true, + secure: configuration.smtp.secure, auth: { user: configuration.smtp.user, pass: configuration.smtp.password, @@ -41,7 +45,8 @@ class EmailService { public async sendEmail(message: EmailMessage): Promise { if (!this.transporter) { - throw new Error('Email service not initialized'); + debug('Email service not initialized, skipping email send'); + return; } await this.transporter.sendMail({