import { MailerModule } from '@nestjs-modules/mailer'; import { Module } from '@nestjs/common'; import { ConfigModule, ConfigService } from '@nestjs/config'; import { join } from 'path'; import * as Joi from 'joi'; import { HandlebarsAdapter } from '@nestjs-modules/mailer/dist/adapters/handlebars.adapter'; @Module({ imports: [ ConfigModule.forRoot({ isGlobal: true, validationSchema: Joi.object({ MAIL_USER: Joi.string().required(), MAIL_PASS: Joi.string().required(), }), }), MailerModule.forRootAsync({ imports: [ConfigModule], useFactory: (configService: ConfigService) => { const templatePath = join(__dirname, '../../..', 'public', 'mail-templates'); console.log('Resolved mail template path:', templatePath); return { transport: { host: 'smtp.gmail.com', port: 587, secure: false, auth: { user: configService.get('MAIL_USER'), pass: configService.get('MAIL_PASS'), }, }, defaults: { from: `"Carnet APP" <${configService.get('MAIL_USER')}>`, }, template: { dir: templatePath, adapter: new HandlebarsAdapter(), options: { strict: true, }, }, }; }, inject: [ConfigService], }), ], }) export class MailModule { }