diff --git a/src/util/config/Config.ts b/src/util/config/Config.ts
index 122dadb5..583c1489 100644
--- a/src/util/config/Config.ts
+++ b/src/util/config/Config.ts
@@ -35,6 +35,7 @@ import {
RegisterConfiguration,
SecurityConfiguration,
SentryConfiguration,
+ SMTPConfiguration,
TemplateConfiguration,
} from "../config";
@@ -58,4 +59,5 @@ export class ConfigValue {
sentry: SentryConfiguration = new SentryConfiguration();
defaults: DefaultsConfiguration = new DefaultsConfiguration();
external: ExternalTokensConfiguration = new ExternalTokensConfiguration();
+ smtp: SMTPConfiguration = new SMTPConfiguration();
}
diff --git a/src/util/config/types/SMTPConfiguration.ts b/src/util/config/types/SMTPConfiguration.ts
new file mode 100644
index 00000000..e833376a
--- /dev/null
+++ b/src/util/config/types/SMTPConfiguration.ts
@@ -0,0 +1,7 @@
+export class SMTPConfiguration {
+ host: string | null = null;
+ port: number | null = null;
+ secure: boolean | null = null;
+ username: string | null = null;
+ password: string | null = null;
+}
diff --git a/src/util/config/types/index.ts b/src/util/config/types/index.ts
index 523ad186..3d8ed6df 100644
--- a/src/util/config/types/index.ts
+++ b/src/util/config/types/index.ts
@@ -34,5 +34,6 @@ export * from "./RegionConfiguration";
export * from "./RegisterConfiguration";
export * from "./SecurityConfiguration";
export * from "./SentryConfiguration";
-export * from "./TemplateConfiguration";
+export * from "./SMTPConfiguration";
export * from "./subconfigurations";
+export * from "./TemplateConfiguration";
diff --git a/src/util/util/Email.ts b/src/util/util/Email.ts
index 48d8cae1..d45eb9a1 100644
--- a/src/util/util/Email.ts
+++ b/src/util/util/Email.ts
@@ -43,3 +43,34 @@ export function adjustEmail(email?: string): string | undefined {
// return email;
}
+
+export const Email: {
+ transporter: Transporter | null;
+ init: () => Promise<void>;
+} = {
+ transporter: null,
+ init: async function () {
+ const { host, port, secure, username, password } = Config.get().smtp;
+ if (!host || !port || !secure || !username || !password) return;
+ console.log(`[SMTP] connect: ${host}`);
+ this.transporter = nodemailer.createTransport({
+ host,
+ port,
+ secure,
+ auth: {
+ user: username,
+ pass: password,
+ },
+ });
+
+ await this.transporter.verify((error, _) => {
+ if (error) {
+ console.error(`[SMTP] error: ${error}`);
+ this.transporter?.close();
+ this.transporter = null;
+ return;
+ }
+ console.log(`[SMTP] Ready`);
+ });
+ },
+};
|