chore: modify mailer module
This commit is contained in:
@@ -691,13 +691,6 @@ export const MAILER_SMTP_USER_UNDEFINED = 'mailer/smtp_user_undefined' as const;
|
|||||||
export const MAILER_SMTP_PASSWORD_UNDEFINED =
|
export const MAILER_SMTP_PASSWORD_UNDEFINED =
|
||||||
'mailer/smtp_password_undefined' as const;
|
'mailer/smtp_password_undefined' as const;
|
||||||
|
|
||||||
/**
|
|
||||||
* MAILER_USE_GRANULAR environment variable is not defined
|
|
||||||
* (MailerModule)
|
|
||||||
*/
|
|
||||||
export const MAILER_USE_CUSTOM_CONFIGS_INVALID_VALUE =
|
|
||||||
'mailer/use_custom_configs_invalid_value' as const;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* SharedRequest invalid request JSON format
|
* SharedRequest invalid request JSON format
|
||||||
* (ShortcodeService)
|
* (ShortcodeService)
|
||||||
|
|||||||
@@ -4,11 +4,9 @@ import { HandlebarsAdapter } from '@nestjs-modules/mailer/dist/adapters/handleba
|
|||||||
import { MailerService } from './mailer.service';
|
import { MailerService } from './mailer.service';
|
||||||
import { throwErr } from 'src/utils';
|
import { throwErr } from 'src/utils';
|
||||||
import {
|
import {
|
||||||
MAILER_FROM_ADDRESS_UNDEFINED,
|
|
||||||
MAILER_SMTP_PASSWORD_UNDEFINED,
|
MAILER_SMTP_PASSWORD_UNDEFINED,
|
||||||
MAILER_SMTP_URL_UNDEFINED,
|
MAILER_SMTP_URL_UNDEFINED,
|
||||||
MAILER_SMTP_USER_UNDEFINED,
|
MAILER_SMTP_USER_UNDEFINED,
|
||||||
MAILER_USE_CUSTOM_CONFIGS_INVALID_VALUE,
|
|
||||||
} from 'src/errors';
|
} from 'src/errors';
|
||||||
import { ConfigService } from '@nestjs/config';
|
import { ConfigService } from '@nestjs/config';
|
||||||
import { loadInfraConfiguration } from 'src/infra-config/helper';
|
import { loadInfraConfiguration } from 'src/infra-config/helper';
|
||||||
@@ -29,30 +27,57 @@ export class MailerModule {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// If mailer is ENABLED, return the module with configuration (service, listener, etc.)
|
// If mailer is ENABLED, return the module with configuration (service, listener, etc.)
|
||||||
let transportOption: TransportType;
|
|
||||||
|
|
||||||
const mailerAddressFrom =
|
// Determine transport configuration based on custom config flag
|
||||||
|
let transportOption = getTransportOption(env, config);
|
||||||
|
// Get mailer address from environment or config
|
||||||
|
const mailerAddressFrom = getMailerAddressFrom(env, config);
|
||||||
|
|
||||||
|
return {
|
||||||
|
module: MailerModule,
|
||||||
|
providers: [MailerService, MailerEventListener],
|
||||||
|
imports: [
|
||||||
|
NestMailerModule.forRoot({
|
||||||
|
transport: transportOption,
|
||||||
|
defaults: {
|
||||||
|
from: mailerAddressFrom,
|
||||||
|
},
|
||||||
|
template: {
|
||||||
|
dir: __dirname + '/templates',
|
||||||
|
adapter: new HandlebarsAdapter(),
|
||||||
|
},
|
||||||
|
}),
|
||||||
|
],
|
||||||
|
};
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function isEnabled(value) {
|
||||||
|
return value === 'true';
|
||||||
|
}
|
||||||
|
function getMailerAddressFrom(env, config): string {
|
||||||
|
return (
|
||||||
env.INFRA.MAILER_ADDRESS_FROM ??
|
env.INFRA.MAILER_ADDRESS_FROM ??
|
||||||
config.get('MAILER_ADDRESS_FROM') ??
|
config.get('MAILER_ADDRESS_FROM') ??
|
||||||
throwErr(MAILER_SMTP_URL_UNDEFINED);
|
throwErr(MAILER_SMTP_URL_UNDEFINED)
|
||||||
|
);
|
||||||
|
}
|
||||||
|
function getTransportOption(env, config): TransportType {
|
||||||
|
const useCustomConfigs = isEnabled(
|
||||||
|
env.INFRA.MAILER_USE_CUSTOM_CONFIGS ??
|
||||||
|
config.get('MAILER_USE_CUSTOM_CONFIGS'),
|
||||||
|
);
|
||||||
|
|
||||||
if (
|
if (!useCustomConfigs) {
|
||||||
(env.INFRA.MAILER_USE_CUSTOM_CONFIGS ??
|
|
||||||
config.get('MAILER_USE_CUSTOM_CONFIGS')) === 'false'
|
|
||||||
) {
|
|
||||||
console.log('Using simple mailer configuration');
|
console.log('Using simple mailer configuration');
|
||||||
|
return (
|
||||||
transportOption =
|
|
||||||
env.INFRA.MAILER_SMTP_URL ??
|
env.INFRA.MAILER_SMTP_URL ??
|
||||||
config.get('MAILER_SMTP_URL') ??
|
config.get('MAILER_SMTP_URL') ??
|
||||||
throwErr(MAILER_SMTP_URL_UNDEFINED);
|
throwErr(MAILER_SMTP_URL_UNDEFINED)
|
||||||
} else if (
|
);
|
||||||
(env.INFRA.MAILER_USE_CUSTOM_CONFIGS ??
|
} else {
|
||||||
config.get('MAILER_USE_CUSTOM_CONFIGS')) === 'true'
|
console.log('Using advanced mailer configuration');
|
||||||
) {
|
return {
|
||||||
console.log('Using advance mailer configuration');
|
|
||||||
|
|
||||||
transportOption = {
|
|
||||||
host: env.INFRA.MAILER_SMTP_HOST ?? config.get('MAILER_SMTP_HOST'),
|
host: env.INFRA.MAILER_SMTP_HOST ?? config.get('MAILER_SMTP_HOST'),
|
||||||
port: +env.INFRA.MAILER_SMTP_PORT ?? +config.get('MAILER_SMTP_PORT'),
|
port: +env.INFRA.MAILER_SMTP_PORT ?? +config.get('MAILER_SMTP_PORT'),
|
||||||
secure:
|
secure:
|
||||||
@@ -73,25 +98,5 @@ export class MailerModule {
|
|||||||
!!config.get('MAILER_TLS_REJECT_UNAUTHORIZED'),
|
!!config.get('MAILER_TLS_REJECT_UNAUTHORIZED'),
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
} else {
|
|
||||||
throwErr(MAILER_USE_CUSTOM_CONFIGS_INVALID_VALUE);
|
|
||||||
}
|
|
||||||
|
|
||||||
return {
|
|
||||||
module: MailerModule,
|
|
||||||
providers: [MailerService, MailerEventListener],
|
|
||||||
imports: [
|
|
||||||
NestMailerModule.forRoot({
|
|
||||||
transport: transportOption,
|
|
||||||
defaults: {
|
|
||||||
from: mailerAddressFrom,
|
|
||||||
},
|
|
||||||
template: {
|
|
||||||
dir: __dirname + '/templates',
|
|
||||||
adapter: new HandlebarsAdapter(),
|
|
||||||
},
|
|
||||||
}),
|
|
||||||
],
|
|
||||||
};
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user