Skip to content

CrowdLinker/nestjs-mailer

Repository files navigation

NestJS Mailer

Mailer module for NestJS

Nest Logo

Packages

Installation

npm install --save @crowdlinker/nestjs-mailer nodemailer
npm install --save-dev @types/nodemailer
// or
// yarn add @crowdlinker/nestjs-mailer nodemailer
// yarn add -D @types/nodemailer

Note: For NestJS < v7, please download version 0.5.0 for this package.

Usage

Importing the Module

Synchronous

import { NodemailerModule } from '@crowdlinker/nestjs-mailer';
import { NodemailerDrivers } from '@crowdlinker/nestjs-mailer';
import { NodemailerOptions } from '@crowdlinker/nestjs-mailer';

@Module({
  imports: [
    NodemailerModule.forRoot({
      transport: {
        host: 'smtp.mailtrap.io',
        port: 2525,
        auth: {
          user: 'ccdff3b99c83ec',
          pass: 'a700a7eafe1e28',
        },
      },
      defaults: {
        from: 'Hello @Crowdlinker <[email protected]>',
      },
    } as NodemailerOptions<NodemailerDrivers.SMTP>),
  ],
})

Asynchronous

import { NodemailerModule } from '@crowdlinker/nestjs-mailer';
import { NodemailerOptions } from '@crowdlinker/nestjs-mailer';

@Module({
  imports: [
    NodemailerModule.forRootAsync({
      imports: [ConfigModule],
      useFactory: async (configService: ConfigService) =>
        ({
          transport: {
            host: configService.host,
            port: configService.port,
            secure: configService.secure,
            auth: {
              user: configService.username,
              pass: configService.password,
            },
          },
          defaults: {
            from: 'Hello @Crowdlinker <[email protected]>',
          },
        } as NodemailerOptions<NodemailerDrivers.SMTP>),
      inject: [ConfigService],
    }),
  ],
})

Importing in a Class/Service

import { Nodemailer } from '@crowdlinker/nestjs-mailer';

class MailService {
  constructor(
    private readonly nodemailer: Nodemailer<NodemailerDrivers.SMTP>
  ) {}

  async mail(to, subject, text, html) {
    this.nodemailer.sendMail({ to, subject, text, html });
  }
}

Drivers

You can use the following drivers

  1. NodemailerDrivers.SES - https://nodemailer.com/transports/ses/
  2. NodemailerDrivers.JSON - https://nodemailer.com/transports/stream/
  3. NodemailerDrivers.SMTP - https://nodemailer.com/smtp/
  4. NodemailerDrivers.SENDMAIL - https://nodemailer.com/transports/sendmail/

Important Points To Note

  • Code is written in Typescript (v3.9.10)

Contributors