이메일이 발송이 되다니 진짜 서비스 같네
https://www.npmjs.com/package/@nestjs-modules/mailer
공식문서는 아닌 것 같은데 docs까지 잘 정리되어 있네요.
npm install --save @nestjs-modules/mailer nodemailer
npm install --save-dev @types/nodemailer
#or
yarn add @nestjs-modules/mailer nodemailer
yarn add -D @types/nodemailer
이메일의 내용을 작성할 때 html을 편하게 작성하기 위한 부분입니다.
저는 handlebars를 설치했습니다.
npm install --save handlebars
#or
npm install --save pug
#or
npm install --save ejs
yarn add handlebars
#or
yarn add pug
#or
yarn add ejs
생각보다 간단?
docs를 보고 충실히 따라해 줍시다.
import { Module } from '@nestjs/common';
import { HandlebarsAdapter } from '@nestjs-modules/mailer/dist/adapters/handlebars.adapter';
import { MailerModule } from '@nestjs-modules/mailer';
import { MailService } from './mail.service';
@Module({
imports: [
MailerModule.forRoot({
transport: {
host: 'smtp.gmail.com',
port: 587,
auth: {
user: process.env.MAIL_USER,
pass: process.env.MAIL_PASS,
},
},
defaults: {
from: '"nest-modules" <modules@nestjs.com>',
},
template: {
dir: __dirname + '/templates',
adapter: new HandlebarsAdapter(),
options: {
strict: true,
},
},
}),
],
providers: [MailService],
exports: [MailService],
})
export class MailModule {}
port로 메일 전송시 SMTP 서버연결에 옵션설정을 합니다.
587은 single connection 입니다.
import { MailerService } from '@nestjs-modules/mailer';
import { ConflictException, Injectable } from '@nestjs/common';
@Injectable()
export class MailService {
constructor(private readonly mailerService: MailerService) {}
sendHello(): boolean {
this.mailerService
.sendMail({
to: 'user@gmail.com',
from: 'noreplay@gmail.com',
subject: 'Hello',
text: 'Hello World',
html: '<b>Hello World</b>',
})
.then((result) => {
console.log(result);
})
.catch((error) => {
new ConflictException(error);
});
return true;
}
}
이게 끝입니다..! 한번 확인해 볼까요?
감사합니다..!