โดย 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 คนได้งานในตำแหน่งนักพัฒนา เริ่มต้น