متن خبر

نحوه ارسال ایمیل با Nodemailer در NestJS

نحوه ارسال ایمیل با Nodemailer در NestJS

شناسهٔ خبر: 463636 -




در حین یادگیری 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 دارید. اگر این کار را انجام دادید، فقط وارد شوید و به تست ایمیل بروید. اگر صندوق ورودی خود را ندارید ایجاد کنید. به صندوق ورودی بروید و باید اعتبار خود را ببینید که برای پیکربندی 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 {}

در کد بالا، MailerModule از @nestjs-modules/mailer وارد کردید. سپس یک متد forRoot() را روی آن فراخوانی کردید. در متد forRoot() یک خاصیت حمل و نقل را مشخص کردید که حاوی ویژگی های host و auth است.

فراموش نکنید که میزبان، پورت، نام کاربری و رمز عبور را از اطلاعات کاربری خود در صندوق ورودی خود در mailtrap.io دریافت کنید.

شما می توانید یک فایل .env ایجاد کنید که تمام جزئیات اعتبار شما را در خود جای دهد. انجام این کار توصیه می شود. برای اینکه بتوانید فایل .env مناسب را در NestJS بارگیری کنید، این را نصب کنید:

 $ npm i --save @nestjs/config

سپس در فایل app.module.ts خود، یک ConfigModule وارد کنید:

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

هنوز در app.module.ts شماست

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

نحوه ارسال ایمیل با 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 بروید و send را بزنید.

سپس به صندوق ورودی mailtrap.io خود بروید و پیام خود را مشاهده کنید.

نتیجه

در این مقاله، نحوه ارسال ایمیل با Nodemailer را یاد گرفتید، نرم افزاری که برای کمک به توسعه دهندگان برای ارسال ایمیل به چندین نفر به طور همزمان طراحی شده است.

شما همچنین یاد گرفته اید که چگونه آن را در زمینه یک برنامه NestJs پیکربندی و راه اندازی کنید.

اگر می خواهید با من ارتباط برقرار کنید، می توانید من را در توییتر یا لینکدین دنبال کنید

خبرکاو

ارسال نظر




تبليغات ايهنا تبليغات ايهنا

تمامی حقوق مادی و معنوی این سایت متعلق به خبرکاو است و استفاده از مطالب با ذکر منبع بلامانع است