Computer >> 컴퓨터 >  >> 소프트웨어 >> 메일

NestJS에서 이메일 전달 마스터하기:Nodemailer를 사용한 단계별 가이드

NestJS에서 이메일 전달 마스터하기:Nodemailer를 사용한 단계별 가이드

작성자:오쿠레 U. 에데트

Nestjs를 배우는 동안 Nodemailer를 사용하여 테스트 이메일을 보내고 싶었지만 NestJS 애플리케이션의 맥락에서는 이 작업을 수행하는 데 어려움이 있었습니다. 나는 해결책을 찾기 위해 인터넷을 검색했고 많은 연구 끝에 해결책을 찾았습니다. 정말 간단했습니다.

이 글에서는 NestJS 프로젝트에서 사용할 수 있도록 내 솔루션을 공유하겠습니다.

목차

  • NestJS 프로젝트를 설정하는 방법
  • 앱에서 Nodemailer를 구성하는 방법
  • Nodemailer로 이메일을 보내는 방법
  • 결론

NestJS 프로젝트 설정 방법

이상적으로는 사용자가 비밀번호 찾기 경로를 클릭하면 링크가 사용자의 이메일로 전송되고 해당 링크를 통해 사용자가 비밀번호를 재설정할 수 있어야 합니다. 이 기사에서는 Nodemailer를 사용하여 이것이 어떻게 작동하는지에 대한 테스트 사례 시나리오를 보여줍니다.

즐겨 사용하는 IDE를 열거나 터미널로 이동하여 다음 명령을 붙여넣으세요.

$ npm i -g @nestjs/cli
$ nest new nodemailer-app

위 명령은 nodemailer-app라는 새 프로젝트를 생성합니다. .

그런 다음 프로젝트 폴더로 이동하여 Nodemailer 패키지 npm i --save @nestjs-modules/mailer nodemailer를 설치하세요. 및 유형, npm i --save-dev @types/nodemailer .

앱에서 Nodemailer를 구성하는 방법

계속 진행하기 전에 mailtrap.io에 계정이 있는지 확인하세요. 그렇다면 로그인하여 이메일 테스트로 이동하세요. . 받은편지함이 없다면 나만의 받은편지함을 만드세요. 받은 편지함으로 이동하면 애플리케이션에서 Nodemailer를 구성하는 데 사용되는 자격 증명이 표시됩니다.

프로젝트 디렉터리에서 앱 모듈 파일로 이동하여 패키지를 구성하세요.

import { Module } from '@nestjs/common';
import { AppController } from './app.controller';
import { AppService } from './app.service';
import { AuthModule } from './auth/auth.module';
import { MailerModule } from '@nestjs-modules/mailer';
@Module({
 imports: [
 AuthModule,
 MailerModule.forRoot({
 transport: {
 host: process.env.EMAIL_HOST,
 auth: {
 user: process.env.EMAIL_USERNAME,
 pass: process.env.EMAIL_PASSWORD,
 },
 },
 }),
 ],
 controllers: [AppController],
 providers: [AppService],
})
export class AppModule {}

위 코드에서는 MailerModule를 가져왔습니다. @nestjs-modules/mailer에서 . 그런 다음 forRoot()에 전화하셨습니다. 그것에 대한 방법. forRoot() 내부 메소드에서 호스트 및 인증 속성이 포함된 전송 속성을 지정했습니다.

mailtrap.io 받은 편지함의 자격 증명에서 호스트, 포트, 사용자 이름 및 비밀번호를 얻는 것을 잊지 마세요.

.env을 만들 수 있습니다 귀하의 모든 자격 증명 세부 정보를 보관할 파일입니다. 그렇게 하는 것이 좋습니다. 적절한 .env을 로드하려면 NestJS에 파일을 설치하려면 다음을 설치하세요:

$ npm i --save @nestjs/config

그런 다음 app.module.ts에서 파일, ConfigModule 가져오기 :

import { ConfigModule } from '@nestjs/config';

아직 app.module.ts에 있습니다.

// include the config module in your imports array
@Module({
 imports: [
 ConfigModule.forRoot({ envFilePath: '.env', isGlobal: true }),
 ],
 controllers: [AppController],
 providers: [AppService],
})

NodeMailer로 이메일을 보내는 방법

Nodemailer를 구성한 후에는 Nodemailer와 함께 이메일을 보낼 차례입니다.

app.service.ts에서 파일에 다음 코드를 붙여넣으세요:

import { MailerService } from '@nestjs-modules/mailer';
import { Injectable } from '@nestjs/common';
@Injectable()
export class AppService {
 constructor(private readonly mailService: MailerService) {}
 sendMail() {
 const message = `Forgot your password? If you didn't forget your password, please ignore this email!`;
 this.mailService.sendMail({
 from: 'Kingsley Okure <kingsleyokgeorge@gmail.com>',
 to: 'joanna@gmail.com',
 subject: `How to Send Emails with Nodemailer`,
 text: message,
 });
 }
}

app.service.ts에서 파일, MailerService 주입된 다음 수업에서 이메일을 보내는 데 사용됩니다. 클래스 내부에서 MailerService sendMail가 있습니다 객체를 매개변수로 받는 함수. 개체에 from가 포함되어 있습니다. , to , subjecttext 속성입니다.

이 작업을 완료한 후 app.controller.ts에서 파일에 다음 코드를 붙여넣으세요:

import { Controller, Get, Res } from '@nestjs/common';
import { AppService } from './app.service';
@Controller()
export class AppController {
 constructor(private readonly appService: AppService) {}
 @Get()
 sendMailer(@Res() response: any) {
 const mail = this.appService.sendMail();
 return response.status(200).json({
 message: 'success',
 mail,
 });
 }
}

컨트롤러에서 수행되는 모든 작업은 Get를 생성하는 것입니다. sendMail를 호출하는 요청 귀하가 서비스에서 생성한 기능입니다.

이상적으로는 실제 응용 프로그램에서는 이 모든 작업이 비밀번호 찾기 기능에서 수행됩니다. 비밀번호 찾기 경로를 클릭하면 사용자에게 이메일이 전송됩니다.

이 작은 설정을 테스트하려면 Postman을 열고 localhost:3000으로 이동하여 보내기를 누르세요.

그런 다음 mailtrap.io 받은 편지함으로 이동하여 메시지를 확인하세요.

결론

이 기사에서는 개발자가 한 번에 여러 사람에게 이메일을 보낼 수 있도록 설계된 소프트웨어인 Nodemailer를 사용하여 이메일을 보내는 방법을 배웠습니다.

또한 NestJs 애플리케이션의 맥락에서 이를 구성하고 설정하는 방법도 배웠습니다.

저와 소통하고 싶으시면 Twitter나 Linkedin에서 저를 팔로우하세요

무료로 코딩을 배우세요. freeCodeCamp의 오픈 소스 커리큘럼은 40,000명 이상의 사람들이 개발자로 취업하는 데 도움을 주었습니다. 시작하세요