@veek/nestjs-modules-mailer
v1.3.2
Published
A mailer module for Nest framework (node.js)
Downloads
1
Maintainers
Readme
Installation
npm install --save @nest-modules/mailer
Usage
Import the MailerModule into the root AppModule.
//app.module.ts
import { Module } from '@nestjs/common';
import { HandlebarsAdapter, MailerModule } from '@nest-modules/mailer';
@Module({
imports: [
MailerModule.forRoot({
transport: 'smtps://[email protected]:[email protected]',
defaults: {
from:'"nest-modules" <[email protected]>',
},
template: {
dir: __dirname + '/templates',
adapter: new HandlebarsAdapter(), // or new PugAdapter()
options: {
strict: true,
},
},
}),
],
})
export class AppModule {}
Of course, it is possible to use an async configuration:
//app.module.ts
import { Module } from '@nestjs/common';
import { HandlebarsAdapter, MailerModule } from '@nest-modules/mailer';
@Module({
imports: [
MailerModule.forRootAsync({
useFactory: () => ({
transport: 'smtps://[email protected]:[email protected]',
defaults: {
from:'"nest-modules" <[email protected]>',
},
template: {
dir: __dirname + '/templates',
adapter: new HandlebarsAdapter(), // or new PugAdapter()
options: {
strict: true,
},
},
}),
}),
],
})
export class AppModule {}
Afterwards, MailerService will be available to inject across entire project (without importing any module elsewhere), for example in this way:
import { Injectable } from '@nestjs/common';
import { MailerService } from '@nest-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 '@nest-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(() => {})
.catch(() => {});
}
public example2(): void {
this
.mailerService
.sendMail({
to: '[email protected]',
from: '[email protected]',
subject: 'Testing Nest Mailermodule with template ✔',
template: 'welcome', // The `.pug` or `.hbs` extension is appended automatically.
context: { // Data to be sent to template engine.
code: 'cf1a3f828287',
username: 'john doe',
},
})
.then(() => {})
.catch(() => {});
}
public example3(): void {
this
.mailerService
.sendMail({
to: '[email protected]',
from: '[email protected]',
subject: 'Testing Nest Mailermodule with template ✔',
template: __dirname + '/welcome', // The `.pug` or `.hbs` extension is appended automatically.
context: { // Data to be sent to template engine.
code: 'cf1a3f828287',
username: 'john doe',
},
})
.then(() => {})
.catch(() => {});
}
}
Contributing
License
MIT