import { MailerModule } from '@nestjs-modules/mailer'; import { HandlebarsAdapter } from '@nestjs-modules/mailer/dist/adapters/handlebars.adapter'; import { Global, Module } from '@nestjs/common'; import { ConfigModule, ConfigService } from '@nestjs/config'; import { join } from 'node:path'; import { IEmailService } from './email-service.interface'; import { EmailService } from './email.service'; @Global() @Module({ imports: [ ConfigModule, MailerModule.forRootAsync({ useFactory: (config: ConfigService) => ({ transport: { host: config.get('SMTP_HOST'), port: config.get('SMTP_PORT'), secure: false, auth: { user: config.get('SMTP_USER'), pass: config.get('SMTP_PASS'), }, }, defaults: { from: config.get('SMTP_FROM'), }, template: { dir: join(process.cwd(), 'src/modules/email/templates'), adapter: new HandlebarsAdapter(), options: { strict: true, }, }, }), inject: [ConfigService], }), ], providers: [ { provide: IEmailService, useClass: EmailService, }, ], exports: [IEmailService], }) export class EmailModule {}