Nestjs Mailer

🌈 A simple implementation example with and without email-templates using mailer module for nest js built on top of nodemailer.
Alternatives To Nestjs Mailer
Project NameStarsDownloadsRepos Using ThisPackages Using ThisMost Recent CommitTotal ReleasesLatest ReleaseOpen IssuesLicenseLanguage
Nest Mailman19413 months ago18August 26, 20211mitTypeScript
📮 The mailer package for your NestJS Applications.
Bulk Mail Cli10824 years ago33March 01, 2020n,ullgpl-3.0TypeScript
Do quick, hassle-free email marketing with this small but very powerful tool! 🔥
Mailman91438 years ago11June 24, 20151JavaScript
Send emails in a comfortable way via models.
Mail8411082 months ago45May 18, 2022mitTypeScript
AdonisJS Email Provider
Feathers Mailer8226134 months ago10August 03, 2021mitTypeScript
Feathers mailer service using nodemailer
Nestjs Mailer63
2 years ago2mitHandlebars
🌈 A simple implementation example with and without email-templates using mailer module for nest js built on top of nodemailer.
Sails Service Mailer295023 years ago13January 27, 2016mitJavaScript
Service for Sails framework with Mailer features [DEAD]
Aws Lambda Node Mailer24
7 years agomitHTML
NodeJs code for Firing Email via AWS-Lambda and SES
Egg Mailer2112 years ago8May 28, 20212mitJavaScript
🥚 mailer plugin for egg
Express Smtp Mailer20
2 years ago2November 02, 20206mitJavaScript
A production-ready Node backend with an Express SMTP mail server configurable for use with contact forms, subscriptions, etc.
Alternatives To Nestjs Mailer
Select To Compare


Alternative Project Comparisons
Readme

Nest Logo

Demo implementation on the mailer modules for Nest framework (node.js) using Nodemailer library

Nestjs-mailer starter kit / project for your NestJs project.

Goals

The main goal of this kit is to quickly get you started on your project with Nestjs Mailer, bringing a solid layout foundation to work upon.

Usage

Import the MailerModule into the root AppModule

Synchronous import

//app.module.ts
import { Module } from '@nestjs/common';
import { MailerModule } from '@nestjs-modules/mailer';  
import { HandlebarsAdapter } from '@nestjs-modules/mailer/dist/adapters/handlebars.adapter';

@Module({
  imports: [
    MailerModule.forRoot({
      transport: {
        host: 'smtp.example.com',
        port: 587,
        secure: false, // upgrade later with STARTTLS
        auth: {
          user: "username",
          pass: "password",
        },
      },
      defaults: {
        from:'"nest-modules" <[email protected]>',
      },
      template: {
        dir: process.cwd() + '/templates/',
        adapter: new HandlebarsAdapter(), // or new PugAdapter()
        options: {
          strict: true,
        },
      },
    }),
  ],
})
export class AppModule {}

Asynchronous import

//app.module.ts
import { Module } from '@nestjs/common';
import { MailerModule } from '@nestjs-modules/mailer';  
import { HandlebarsAdapter } from '@nestjs-modules/mailer/dist/adapters/handlebars.adapter';

@Module({
  imports: [
    MailerModule.forRootAsync({
      useFactory: () => ({
        transport: {
          host: 'smtp.example.com',
          port: 587,
          secure: false, // upgrade later with STARTTLS
          auth: {
            user: "username",
            pass: "password",
          },
        },
        defaults: {
          from:'"nest-modules" <[email protected]>',
        },
        template: {
          dir: process.cwd() + '/templates/',
          adapter: new HandlebarsAdapter(), // or new PugAdapter() or new EjsAdapter()
          options: {
            strict: true,
          },
        },
      }),
    }),
  ],
})
export class AppModule {}
  • We have used Handlebars in above example, for EJS and Pug use below mentioned example of adapter import

Pug

//app.module.ts
import { Module } from '@nestjs/common';
import { MailerModule } from '@nestjs-modules/mailer';  
import { PugAdapter } from '@nestjs-modules/mailer/dist/adapters/pug.adapter';

EJS

//app.module.ts
import { Module } from '@nestjs/common';
import { MailerModule } from '@nestjs-modules/mailer';  
import { EjsAdapter } from '@nestjs-modules/mailer/dist/adapters/ejs.adapter';

After this, MailerService will be available to inject across entire project, for example in this way :

import { Injectable } from '@nestjs/common';
import { MailerService } from '@nestjs-modules/mailer';

@Injectable()
export class ExampleService {
  constructor(private readonly mailerService: MailerService) {}
}

MailerProvider exports the sendMail() function to which you can pass the message options (sender, email subject, recipient, body content, etc)

sendMail() accepts the same fields as nodemailer email message

import { Injectable } from '@nestjs/common';
import { MailerService } from '@nestjs-modules/mailer';

@Injectable()
export class ExampleService {
  constructor(private readonly mailerService: MailerService) {}
  
  public example(): void {
    this
      .mailerService
      .sendMail({
        to: '[email protected]', // list of receivers
        from: '[email protected]', // sender address
        subject: 'Testing Nest MailerModule ✔', // Subject line
        text: 'welcome', // plaintext body
        html: '<b>welcome</b>', // HTML body content
      })
      .then((success) => {
        console.log(success)
      })
      .catch((err) => {
        console.log(err)
      });
  }
  
  public example2(): void {
    this
      .mailerService
      .sendMail({
        to: '[email protected]',
        from: '[email protected]',
        subject: 'Testing Nest Mailermodule with template ✔',
        template: 'index', // The `.pug` or `.hbs` extension is appended automatically.
        context: {  // Data to be sent to template engine.
          code: 'cf1a3f828287',
          username: 'john doe',
        },
      })
       .then((success) => {
        console.log(success)
      })
      .catch((err) => {
        console.log(err)
      });
  }
  
  public example3(): void {
    this
      .mailerService
      .sendMail({
        to: '[email protected]',
        from: '[email protected]',
        subject: 'Testing Nest Mailermodule with template ✔',
        template: '/index', // The `.pug` or `.hbs` extension is appended automatically.
        context: {  // Data to be sent to template engine.
          code: 'cf1a3f828287',
          username: 'john doe',
        },
      })
      .then((success) => {
        console.log(success)
      })
      .catch((err) => {
        console.log(err)
      });
  }
}

Make a template named folder at the root level of the project and keep all the email-templates in the that folder with .hbs extension. This implementation uses handlebars as a view-engine and outlook as the smtp.

Configuration

Dotenv module has been used for sender's email and password keep. This kit is implemented with outlook smtp, while we can make changes in the app.module.ts configurations for other services. As the nestjs-mailer is built on top of nodemailer, the required configurations can be found here Nodemailer / smtp.

Special thanks to leemunroe/responsive-html-email-template for providing email-templates

Popular Nodemailer Projects
Popular Mailer Projects
Popular Messaging Categories
Related Searches

Get A Weekly Email With Trending Projects For These Categories
No Spam. Unsubscribe easily at any time.
Email
Kit
Ejs
Nestjs
Nest
Handlebars
Smtp
Pug
Mailer
Outlook
Nodemailer