Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> ซอฟต์แวร์ >> อีเมล

การเรียนรู้การส่งอีเมลใน NestJS:คำแนะนำทีละขั้นตอนกับ Nodemailer

การเรียนรู้การส่งอีเมลใน NestJS:คำแนะนำทีละขั้นตอนกับ Nodemailer

โดย Okure U. Edet

ในขณะที่เรียนรู้ Nestj ฉันต้องการที่จะส่งอีเมลทดสอบด้วย Nodemailer แต่ฉันประสบปัญหาในการทำเช่นนี้ในบริบทของแอปพลิเคชัน NestJS ฉันค้นหาวิธีแก้ปัญหาทางอินเทอร์เน็ต และหลังจากค้นคว้าข้อมูลมามาก ก็พบวิธีแก้ปัญหาหนึ่ง มันกลายเป็นเรื่องง่ายจริงๆ

ในบทความนี้ ฉันจะแชร์โซลูชันของฉันเพื่อให้คุณสามารถใช้ในโครงการ NestJS ของคุณได้

สารบัญ

  • วิธีตั้งค่าโครงการ NestJS
  • วิธีกำหนดค่า Nodemailer ในแอปของคุณ
  • วิธีการส่งอีเมลด้วย Nodemailer
  • บทสรุป

วิธีการตั้งค่าโครงการ NestJS

ตามหลักการแล้ว เมื่อผู้ใช้คลิกเส้นทางลืมรหัสผ่าน ลิงก์ควรถูกส่งไปยังอีเมลของผู้ใช้ และผู้ใช้ควรจะรีเซ็ตรหัสผ่านผ่านลิงก์นั้นได้ บทความนี้จะสาธิตสถานการณ์กรณีทดสอบเกี่ยวกับวิธีการทำงานโดยใช้ Nodemailer

เปิด IDE ที่คุณชื่นชอบหรือไปที่เทอร์มินัลแล้ววางคำสั่งต่อไปนี้:

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

คำสั่งข้างต้นจะสร้างโปรเจ็กต์ใหม่ชื่อ 01 .

หลังจากดำเนินการนี้ ให้นำทางไปยังโฟลเดอร์โปรเจ็กต์ของคุณและติดตั้งแพ็คเกจ Nodemailer 11 และประเภท 28 .

วิธีกำหนดค่า 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 {}

ในโค้ดข้างต้น คุณได้นำเข้า 36 จาก 41 . จากนั้นคุณโทรไปที่ 55 วิธีการนั้น ภายใน 68 วิธีการ คุณระบุคุณสมบัติการขนส่งซึ่งมีคุณสมบัติโฮสต์และการรับรองความถูกต้อง

อย่าลืมรับโฮสต์ พอร์ต ชื่อผู้ใช้ และรหัสผ่านจากข้อมูลประจำตัวของคุณในกล่องจดหมายบน mailtrap.io

คุณสามารถสร้าง 70 ไฟล์ที่จะเก็บรายละเอียดข้อมูลรับรองทั้งหมดของคุณ ขอแนะนำให้ทำเช่นนั้น เพื่อให้สามารถโหลด 87 ที่เหมาะสมได้ ใน NestJS ให้ติดตั้งสิ่งนี้:

$ npm i --save @nestjs/config

จากนั้นใน 90 ของคุณ ให้นำเข้าไฟล์ 108 :

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

ยังอยู่ใน 118 ของคุณ

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

วิธีการส่งอีเมลด้วย NodeMailer

หลังจากกำหนดค่า Nodemailer แล้ว ก็ถึงเวลาส่งอีเมลด้วย

ใน 123 ของคุณ ไฟล์ ให้วางโค้ดต่อไปนี้:

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

ใน 131 ไฟล์ 141 จะถูกฉีดเข้าไปแล้วนำไปใช้ในชั้นเรียนเพื่อส่งอีเมล ภายในชั้นเรียน 159 มี 163 ฟังก์ชั่นที่รับวัตถุเป็นพารามิเตอร์ วัตถุมี 172 , 187 , 191 และ 206 ทรัพย์สิน

เมื่อคุณดำเนินการเสร็จแล้ว ใน 217 ไฟล์ ให้วางโค้ดต่อไปนี้:

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

สิ่งที่คุณทำในคอนโทรลเลอร์คือการสร้าง 226 คำขอซึ่งจะเรียก 238 ฟังก์ชั่นที่คุณสร้างขึ้นในบริการ

ตามหลักการแล้ว ในแอปพลิเคชันในโลกแห่งความเป็นจริง ทั้งหมดนี้จะทำในฟังก์ชันลืมรหัสผ่าน และอีเมลจะถูกส่งไปยังผู้ใช้เมื่อพวกเขาคลิกที่เส้นทางลืมรหัสผ่าน

หากต้องการทดสอบการตั้งค่าเล็กๆ น้อยๆ นี้ ให้เปิดบุรุษไปรษณีย์ของคุณแล้วไปที่ localhost:3000 แล้วกดส่ง

จากนั้นไปที่กล่องจดหมาย mailtrap.io และดูข้อความของคุณ

บทสรุป

ในบทความนี้ คุณได้เรียนรู้วิธีส่งอีเมลด้วย Nodemailer ซึ่งเป็นซอฟต์แวร์ที่ออกแบบมาเพื่อช่วยนักพัฒนาส่งอีเมลถึงคนหลายคนพร้อมกัน

คุณยังได้เรียนรู้วิธีกำหนดค่าและตั้งค่าในบริบทของแอปพลิเคชัน NestJs

หากคุณต้องการเชื่อมต่อกับฉัน คุณสามารถติดตามฉันบน Twitter หรือบน Linkedin

เรียนรู้การเขียนโค้ดฟรี หลักสูตรโอเพ่นซอร์สของ freeCodeCamp ช่วยให้ผู้คนมากกว่า 40,000 คนได้งานในตำแหน่งนักพัฒนา เริ่มต้น