간단한 nestjs/mailer 예제 만들기

gwanhun·2023년 6월 2일
0

공식 문서 : https://nest-modules.github.io/mailer/docs/mailer.html

  • 먼저 nestjs-mailer 모듈을 설치한다.
    yarn add @nestjs-modules/mailer nodemailer
    #or
    npm install --save @nestjs-modules/mailer nodemailer
  • 그 다음 템플릿을 사용하기 위하여 원하는 템플릿을 설치한다. 참고로 여기서는 pug를 사용했다.
    npm install --save handlebars
    #or
    npm install --save pug
    #or
    npm install --save ejs
  • 그다음 app.module에 mailer를 추가한다.
    //app.module.ts
    import { Module } from '@nestjs/common';
    import { MailerModule } from '@nestjs-modules/mailer';
    import { PugAdapter } from '@nestjs-modules/mailer/dist/adapters/pug.adapter';
    
    @Module({
      imports: [
        MailerModule.forRoot({
          transport: `smtps://${process.env.EMAIL_AUTH_EMAIL}:${process.env.EMAIL_AUTH_PASSWORD}@${process.env.EMAIL_HOST}`,
    //'smtps://user@domain.com:pass@smtp.domain.com', 이부분은 보안을 위하여 .env 파일로 관리하는 것이 좋을것 같음
          //defaults: {
          //  from: '"nest-modules" <modules@nestjs.com>',
          //},
          template: {
            dir: __dirname + '/templates',
            adapter: new PugAdapter(),
            options: {
              strict: true,
            },
          },
        }),
      ],
    })
    export class AppModule {}
  • app.service
    import { MailerService } from '@nestjs-modules/mailer';
    import { Injectable } from '@nestjs/common';
    
    @Injectable()
    export class AppService {
      constructor(private readonly mailerService: MailerService) {}
      getHello(): string {
        return 'Hello World!';
      }
    
      public example() {
        this.mailerService.sendMail({
          to: '<modules@nestjs.com', // 받는 사람 메일주소
          from: 'noreply@nestjs.com', // 보내는 사람 메일주소
          subject: 'Testing Nest MailerModule ✔', // 메일 제목
          text: 'welcome', // 메일 내용
          html: '<h1>welcome</h1>', // 메일 내용
        });
        return true;
        // .then(() => {return true})
        // .catch(() => {});
      }
    }
  • mailer 에서 사용할 구글 계정의 smtp 코드를 생성 해야함 참고로 여기서는 구글계정, gmail 사용
  • 성공 결과!
profile
주니어 백앤드 개발자

0개의 댓글