diff --git a/src/server.ts b/src/server.ts index 8645a99..df90e0c 100644 --- a/src/server.ts +++ b/src/server.ts @@ -10,6 +10,7 @@ import { seedDefaultConfigurations } from './services/configSeed.service'; import { startPauseResumeJob } from './jobs/pauseResumeJob'; import './queues/pauseResumeWorker'; // Initialize pause resume worker import { initializeQueueMetrics, stopQueueMetrics } from './utils/queueMetrics'; +import { emailService } from './services/email.service'; const PORT: number = parseInt(process.env.PORT || '5000', 10); @@ -20,6 +21,15 @@ const startServer = async (): Promise => { // This will merge secrets from GCS into process.env if enabled await initializeSecrets(); + // Re-initialize email service after secrets are loaded (in case SMTP credentials were loaded) + // This ensures the email service uses production SMTP if credentials are available + try { + await emailService.initialize(); + console.log('📧 Email service re-initialized after secrets loaded'); + } catch (error) { + console.warn('⚠️ Email service re-initialization warning (will use test account if SMTP not configured):', error); + } + const server = http.createServer(app); initSocket(server); diff --git a/src/services/email.service.ts b/src/services/email.service.ts index 52f1315..325a363 100644 --- a/src/services/email.service.ts +++ b/src/services/email.service.ts @@ -106,6 +106,18 @@ export class EmailService { await this.initialize(); } + // If using test account, check if SMTP credentials are now available and re-initialize + if (this.useTestAccount) { + const smtpHost = process.env.SMTP_HOST; + const smtpUser = process.env.SMTP_USER; + const smtpPassword = process.env.SMTP_PASSWORD; + + if (smtpHost && smtpUser && smtpPassword) { + logger.info('📧 SMTP credentials detected - re-initializing email service with production SMTP'); + await this.initialize(); + } + } + const recipients = Array.isArray(options.to) ? options.to.join(', ') : options.to; const fromAddress = process.env.EMAIL_FROM || 'RE Flow '; @@ -253,6 +265,8 @@ export class EmailService { export const emailService = new EmailService(); // Initialize on import (will use test account if SMTP not configured) +// Note: If secrets are loaded later, the service will re-initialize automatically +// when sendEmail is called (if SMTP credentials become available) emailService.initialize().catch(error => { logger.error('Failed to initialize email service:', error); });