| 123456789101112131415161718192021222324252627282930313233343536373839404142434445 |
- import type { Transporter } from 'nodemailer';
- import nodemailer from 'nodemailer';
- import ses from 'nodemailer-ses-transport';
- import loggerFactory from '~/utils/logger';
- import type { IConfigManagerForApp } from '../config-manager';
- const logger = loggerFactory('growi:service:mail');
- /**
- * Creates an AWS SES transport client for email sending.
- *
- * @param configManager - Configuration manager instance
- * @param option - Optional SES configuration (for testing)
- * @returns nodemailer Transporter instance, or null if credentials incomplete
- *
- * @remarks
- * Config keys required: mail:sesAccessKeyId, mail:sesSecretAccessKey
- */
- export function createSESClient(
- configManager: IConfigManagerForApp,
- option?: { accessKeyId: string; secretAccessKey: string },
- ): Transporter | null {
- if (!option) {
- const accessKeyId = configManager.getConfig('mail:sesAccessKeyId');
- const secretAccessKey = configManager.getConfig('mail:sesSecretAccessKey');
- if (accessKeyId == null || secretAccessKey == null) {
- return null;
- }
- // biome-ignore lint/style/noParameterAssign: maintaining existing behavior
- option = {
- accessKeyId,
- secretAccessKey,
- };
- }
- const client = nodemailer.createTransport(ses(option));
- logger.debug('mailer set up for SES', client);
- return client;
- }
|