লেখক: ওকুরে ইউ. এডেট
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-তে আপনার একটি অ্যাকাউন্ট আছে। আপনার থাকলে, শুধু লগইন করুন এবং Email Testing-এ নেভিগেট করুন। আপনার যদি না থাকে তবে আপনার নিজের ইনবক্স তৈরি করুন। ইনবক্সে নেভিগেট করুন এবং আপনার ক্রেডেনশিয়ালগুলো দেখতে পাবেন যা আপনার অ্যাপ্লিকেশনে Nodemailer কনফিগার করতে ব্যবহার করা হবে।
আপনার প্রজেক্ট ডিরেক্টরিতে, app module ফাইলে যান এবং প্যাকেজটি কনফিগার করুন:
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 {}
উপরের কোডে, আপনি @nestjs-modules/mailer- থেকে MailerModule ইমপোর্ট করেছেন। তারপর আপনি সেটিতে forRoot() মেথড কল করেছেন। forRoot() মেথডের ভিতরে, আপনি একটি transport প্রপার্টি নির্দিষ্ট করেছেন যাতে host এবং auth প্রপার্টি রয়েছে।
Mailtrap.io-তে আপনার ইনবক্সের ক্রেডেনশিয়াল থেকে host, port, username এবং password পাওয়া নিশ্চিত করুন।
আপনি একটি .env ফাইল তৈরি করতে পারেন যেটি আপনার সব ক্রেডেনশিয়ালের ডিটেইল রাখবে। এটি করা উপযুক্ত। NestJS-এ উপযুক্ত .env ফাইল লোড করতে, এটি ইনস্টল করুন:
$ npm i --save @nestjs/config
তারপর আপনার app.module.ts ফাইলে, ConfigModule ইমপোর্ট করুন:
import { ConfigModule } from '@nestjs/config';
আপনার app.module.ts-এ এখনও
// আপনার imports array-এ config module ইনক্লুড করুন
@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, subject এবং text প্রপার্টি রয়েছে।
এটি করার পর, 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 অ্যাপ্লিকেশনের কনটেক্সটে কনফিগার এবং সেট আপ করতে হয়।
আপনি যদি আমার সাথে যোগাযোগ করতে চান, তবে আপনি টুইটারে বা লিংকডইনে আমাকে ফলো করতে পারেন।
নি:শুল্কে কোডিং শিখুন। freeCodeCamp-এর ওপেন সোর্স ক্যারিকুলাম ৪০,০০০-এর অধিক লোককে ডেভেলপার হিসেবে চাকরি পেতে সাহায্য করেছে। শুরু করুন।