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) => ({ transport: { host: 'smtp.gmail.com', port: 587, // ignoreTLS: true, secure: false, auth: { user: configService.get('MAIL_USER'), pass: configService.get('MAIL_PASS'), }, }, defaults: { from: `"Carnet APP" <${configService.get('MAIL_USER')}>`, }, template: { dir: join(__dirname, '../../..', 'public', 'mail-templates'), adapter: new HandlebarsAdapter(), // import from '@nestjs-modules/mailer/dist/adapters/handlebars.adapter' options: { strict: true, }, }, }), inject: [ConfigService], }), ], }) export class MailModule { }