Computer >> Hướng Dẫn Máy Tính >  >> Phần Mềm >> Thư Điện Tử

Làm chủ việc gửi email trong NestJS:Hướng dẫn từng bước với Nodemailer

Làm chủ việc gửi email trong NestJS:Hướng dẫn từng bước với Nodemailer

Bởi Okure U. Edet

Trong khi tìm hiểu Nestjs, tôi muốn có thể gửi email thử nghiệm bằng Nodemailer nhưng tôi gặp khó khăn khi thực hiện việc này trong bối cảnh của ứng dụng NestJS. Tôi đã tìm kiếm trên Internet một giải pháp và sau nhiều nghiên cứu, tôi đã tìm thấy một giải pháp. Hóa ra nó thực sự đơn giản.

Trong bài viết này, tôi sẽ chia sẻ giải pháp của mình để bạn có thể sử dụng nó trong các dự án NestJS của mình.

Mục lục

  • Cách thiết lập dự án NestJS
  • Cách định cấu hình Nodemailer trong ứng dụng của bạn
  • Cách gửi email bằng Nodemailer
  • Kết luận

Cách thiết lập dự án NestJS

Lý tưởng nhất là khi người dùng nhấp vào lộ trình quên mật khẩu, một liên kết sẽ được gửi đến email của người dùng và thông qua liên kết đó, người dùng sẽ có thể đặt lại mật khẩu của mình. Bài viết này sẽ trình bày một kịch bản thử nghiệm về cách thức hoạt động của tính năng này bằng Nodemailer.

Mở IDE yêu thích của bạn hoặc điều hướng đến thiết bị đầu cuối và dán lệnh sau:

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

Các lệnh trên tạo ra một dự án mới có tên nodemailer-app .

Sau khi thực hiện việc này, hãy điều hướng đến thư mục dự án của bạn và cài đặt các gói Nodemailer, npm i --save @nestjs-modules/mailer nodemailer và các loại, npm i --save-dev @types/nodemailer .

Cách định cấu hình Nodemailer trong ứng dụng của bạn

Trước khi tiếp tục, hãy đảm bảo bạn có tài khoản trên mailtrap.io. Nếu bạn làm như vậy, chỉ cần đăng nhập và điều hướng đến Kiểm tra email . Tạo hộp thư đến của riêng bạn nếu bạn chưa có. Điều hướng đến hộp thư đến và bạn sẽ thấy thông tin đăng nhập sẽ được sử dụng để định cấu hình Nodemailer trong ứng dụng của bạn.

Trong thư mục dự án của bạn, hãy chuyển đến tệp mô-đun ứng dụng và định cấu hình gói:

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 {}

Trong đoạn mã trên, bạn đã nhập MailerModule từ @nestjs-modules/mailer . Sau đó, bạn đã gọi số forRoot() phương pháp trên đó. Bên trong forRoot() phương thức, bạn đã chỉ định thuộc tính vận chuyển chứa thuộc tính máy chủ và xác thực.

Đừng quên lấy máy chủ, cổng, tên người dùng và mật khẩu từ thông tin xác thực của bạn trong hộp thư đến trên mailtrap.io.

Bạn có thể tạo .env tập tin sẽ chứa tất cả các chi tiết thông tin xác thực của bạn. Đó là khuyến khích để làm như vậy. Để có thể tải .env thích hợp trong NestJS, hãy cài đặt tệp này:

$ npm i --save @nestjs/config

Sau đó, trong app.module.ts của bạn tệp, nhập ConfigModule :

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

Vẫn ở app.module.ts của bạn

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

Cách gửi email bằng NodeMailer

Sau khi định cấu hình Nodemailer, đã đến lúc gửi email bằng nó.

Trong app.service.ts của bạn tập tin, dán đoạn mã sau:

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,
 });
 }
}

Trong app.service.ts tập tin MailerService được đưa vào và sau đó được sử dụng trong lớp để gửi email. Bên trong lớp, MailerServicesendMail hàm lấy một đối tượng làm tham số. Đối tượng chứa from , to , subjecttext tài sản.

Khi bạn đã thực hiện xong việc này, trong app.controller.ts tập tin, dán đoạn mã sau:

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,
 });
 }
}

Tất cả những gì được thực hiện trong bộ điều khiển là tạo Get yêu cầu sẽ gọi tới sendMail chức năng bạn đã tạo trong dịch vụ.

Lý tưởng nhất là trong một ứng dụng trong thế giới thực, tất cả điều này sẽ được thực hiện bằng chức năng quên mật khẩu. Và một email sẽ được gửi đến người dùng khi họ nhấp vào tuyến đường quên mật khẩu.

Để kiểm tra thiết lập nhỏ này, hãy mở Người đưa thư của bạn và truy cập localhost:3000 rồi nhấn gửi.

Sau đó, hãy truy cập hộp thư đến mailtrap.io và xem tin nhắn của bạn.

Kết luận

Trong bài viết này, bạn đã học cách gửi email bằng Nodemailer, một phần mềm được thiết kế để giúp các nhà phát triển gửi email cho nhiều người cùng một lúc.

Bạn cũng đã học cách định cấu hình và thiết lập nó trong ngữ cảnh của ứng dụng NestJs.

Nếu bạn muốn kết nối với tôi, bạn có thể theo dõi tôi trên Twitter hoặc trên Linkedin

Học cách viết mã miễn phí. Chương trình giảng dạy mã nguồn mở của freeCodeCamp đã giúp hơn 40.000 người có được việc làm với tư cách là nhà phát triển. Bắt đầu