fix(email): fatally exit if email is enabled but cannot be initialized (#2204)

This commit is contained in:
Iain Sproat
2024-06-18 10:36:21 +01:00
committed by GitHub
parent a79680da00
commit 694d770bf4
2 changed files with 25 additions and 2 deletions
@@ -1,4 +1,5 @@
import { logger, moduleLogger } from '@/logging/logging'
import { isEmailEnabled, isTestEnv } from '@/modules/shared/helpers/envHelper'
import { createTransport, Transporter } from 'nodemailer'
let transporter: Transporter | undefined = undefined
@@ -29,8 +30,26 @@ const initSmtpTransporter = async () => {
export async function initializeTransporter(): Promise<Transporter | undefined> {
let newTransporter = undefined
if (process.env.NODE_ENV === 'test') newTransporter = createJsonEchoTransporter()
if (process.env.EMAIL === 'true') newTransporter = await initSmtpTransporter()
if (isEmailEnabled()) {
newTransporter = await initSmtpTransporter()
if (!newTransporter) {
const message =
'📧 Email provider is enabled but transport has not initialized correctly. Please review the email configuration or your email system for problems.'
moduleLogger.error(message)
throw new Error(message)
}
}
if (!newTransporter && isTestEnv()) {
newTransporter = createJsonEchoTransporter()
if (!newTransporter) {
const message =
'📧 In testing a mock email provider is enabled but transport has not initialized correctly.'
moduleLogger.error(message)
throw new Error(message)
}
}
if (!newTransporter) {
moduleLogger.warn(
@@ -297,3 +297,7 @@ export function getGendoAIAPIEndpoint() {
}
export const getFeatureFlags = () => Environment.getFeatureFlags()
export function isEmailEnabled() {
return process.env.EMAIL === 'true'
}