NestJS सीखते समय Nodemailer से टेस्ट ईमेल भेजना चाहता था, लेकिन NestJS कॉन्टेक्स्ट में कॉन्फ़िगरेशन मुश्किल लगा। शोध के बाद सरल समाधान मिला—इस लेख में वही साझा कर रहा हूं।
विषय सूची
- NestJS प्रोजेक्ट सेटअप
- Nodemailer कॉन्फ़िगरेशन
- ईमेल भेजना
- निष्कर्ष
1. NestJS प्रोजेक्ट सेटअप
$ npm i -g @nestjs/cli
$ nest new nodemailer-app
$ cd nodemailer-app
$ npm i --save @nestjs-modules/mailer nodemailer
$ npm i --save-dev @types/nodemailer
2. Nodemailer कॉन्फ़िगर करें
Mailtrap.io पर अकाउंट बनाएं, Email Testing इनबॉक्स बनाएं, और क्रेडेंशियल्स (होस्ट, पोर्ट, यूज़र, पास) नोट करें।
app.module.ts में:
import { Module } from '@nestjs/common';
import { MailerModule } from '@nestjs-modules/mailer';
import { ConfigModule } from '@nestjs/config';
@Module({
imports: [
ConfigModule.forRoot({ envFilePath: '.env', isGlobal: true }),
MailerModule.forRoot({
transport: {
host: process.env.EMAIL_HOST,
port: process.env.EMAIL_PORT,
auth: {
user: process.env.EMAIL_USERNAME,
pass: process.env.EMAIL_PASSWORD,
},
},
}),
],
controllers: [AppController],
providers: [AppService],
})
export class AppModule {}
.env फ़ाइल बनाएं:
EMAIL_HOST=smtp.mailtrap.io
EMAIL_PORT=2525
EMAIL_USERNAME=your-mailtrap-username
EMAIL_PASSWORD=your-mailtrap-password
@nestjs/config इंस्टॉल करना न भूलें: npm i --save @nestjs/config
3. ईमेल भेजें
app.service.ts में सेवा बनाएं:
import { Injectable } from '@nestjs/common';
import { MailerService } from '@nestjs-modules/mailer';
@Injectable()
export class AppService {
constructor(private readonly mailService: MailerService) {}
async sendMail() {
const message = `Forgot your password? If you didn't request this, please ignore.`;
await this.mailService.sendMail({
from: 'Kingsley Okure <kingsleyokgeorge@gmail.com>',
to: 'joanna@gmail.com',
subject: 'How to Send Emails with Nodemailer',
text: message,
});
}
}
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()
async sendMailer(@Res() response: any) {
await this.appService.sendMail();
return response.status(200).json({ message: 'success' });
}
}
4. टेस्ट करें
- ऐप चलाएं:
npm run start - Postman से
GET https://localhost:3000हिट करें - Mailtrap इनबॉक्स चेक करें — ईमेल दिखेगा
वास्तविक उपयोग: पासवर्ड रीसेट फ्लो
असली ऐप में यह /forgot-password रूट में होगा, जहां यूज़र ईमेल देता है, टोकन जनरेट होता है, और रीसेट लिंक ईमेल होता है।
निष्कर्ष
NestJS में @nestjs-modules/mailer रैपर Nodemailer कॉन्फ़िगरेशन को साफ़ और मॉड्यूलर बनाता है। पर्यावरण वेरिएबल्स से क्रेडेंशियल्स अलग रखना सुरक्षित अभ्यास है।