Files
twenty/packages/twenty-server/src/integrations/email/email.module-factory.ts
T
martmull ae5558d8b5 Add mail driver (#3205)
* Add node mailer packages

* Init mailer module

* Add logger transport

* Use env variable to get transport

* Revert "Add node mailer packages"

This reverts commit 3fb954f0caef94266f96ff5f08de750073ab3491.

* Add nodemailer

* Use driver pattern

* Use logger

* Fix yarn install

* Code review returns

* Add configuration examples for smtp

* Fix merge conflict

* Add missing packages

* Fix ci
2024-01-05 16:08:19 +01:00

41 lines
1.1 KiB
TypeScript

import {
EmailDriver,
EmailModuleOptions,
} from 'src/integrations/email/interfaces/email.interface';
import { EnvironmentService } from 'src/integrations/environment/environment.service';
export const emailModuleFactory = (
environmentService: EnvironmentService,
): EmailModuleOptions => {
const driver = environmentService.getEmailDriver();
switch (driver) {
case EmailDriver.Logger: {
return;
}
case EmailDriver.Smtp: {
const host = environmentService.getEmailHost();
const port = environmentService.getEmailPort();
const user = environmentService.getEmailUser();
const pass = environmentService.getEmailPassword();
if (!(host && port)) {
throw new Error(
`${driver} email driver requires host: ${host} and port: ${port} to be defined, check your .env file`,
);
}
const auth = user && pass ? { user, pass } : undefined;
if (auth) {
return { host, port, auth };
}
return { host, port };
}
default:
throw new Error(`Invalid email driver (${driver}), check your .env file`);
}
};