60 lines
1.8 KiB
TypeScript
60 lines
1.8 KiB
TypeScript
import { TransportType } from '@nestjs-modules/mailer/dist/interfaces/mailer-options.interface';
|
|
import {
|
|
MAILER_SMTP_PASSWORD_UNDEFINED,
|
|
MAILER_SMTP_URL_UNDEFINED,
|
|
MAILER_SMTP_USER_UNDEFINED,
|
|
} from 'src/errors';
|
|
import { throwErr } from 'src/utils';
|
|
|
|
function isSMTPCustomConfigsEnabled(value) {
|
|
return value === 'true';
|
|
}
|
|
|
|
export function getMailerAddressFrom(env, config): string {
|
|
return (
|
|
env.INFRA.MAILER_ADDRESS_FROM ??
|
|
config.get('MAILER_ADDRESS_FROM') ??
|
|
throwErr(MAILER_SMTP_URL_UNDEFINED)
|
|
);
|
|
}
|
|
|
|
export function getTransportOption(env, config): TransportType {
|
|
const useCustomConfigs = isSMTPCustomConfigsEnabled(
|
|
env.INFRA.MAILER_USE_CUSTOM_CONFIGS ??
|
|
config.get('MAILER_USE_CUSTOM_CONFIGS'),
|
|
);
|
|
|
|
if (!useCustomConfigs) {
|
|
console.log('Using simple mailer configuration');
|
|
return (
|
|
env.INFRA.MAILER_SMTP_URL ??
|
|
config.get('MAILER_SMTP_URL') ??
|
|
throwErr(MAILER_SMTP_URL_UNDEFINED)
|
|
);
|
|
} else {
|
|
console.log('Using advanced mailer configuration');
|
|
return {
|
|
host: env.INFRA.MAILER_SMTP_HOST ?? config.get('MAILER_SMTP_HOST'),
|
|
port: +(env.INFRA.MAILER_SMTP_PORT ?? config.get('MAILER_SMTP_PORT')),
|
|
secure:
|
|
(env.INFRA.MAILER_SMTP_SECURE ?? config.get('MAILER_SMTP_SECURE')) ===
|
|
'true',
|
|
auth: {
|
|
user:
|
|
env.INFRA.MAILER_SMTP_USER ??
|
|
config.get('MAILER_SMTP_USER') ??
|
|
throwErr(MAILER_SMTP_USER_UNDEFINED),
|
|
pass:
|
|
env.INFRA.MAILER_SMTP_PASSWORD ??
|
|
config.get('MAILER_SMTP_PASSWORD') ??
|
|
throwErr(MAILER_SMTP_PASSWORD_UNDEFINED),
|
|
},
|
|
tls: {
|
|
rejectUnauthorized:
|
|
(env.INFRA.MAILER_TLS_REJECT_UNAUTHORIZED ??
|
|
config.get('MAILER_TLS_REJECT_UNAUTHORIZED')) === 'true',
|
|
},
|
|
};
|
|
}
|
|
}
|