Mohammad Jawad Barati
Mohammad Jawad Barati
خواندن ۳ دقیقه·۴ سال پیش

ارسال ایمیل توی نود.جی‌اس تفاوت ها و روش ها

میخوای یکمی در مورد ارسال ایمیل تو نود.جی‌اس بیشتر بدونی. جای درستی اومدی
میخوای یکمی در مورد ارسال ایمیل تو نود.جی‌اس بیشتر بدونی. جای درستی اومدی

قبل از همه بگم که چرا تو نود.جی‌اس مثل php یه متد mail برای ارسال ایمیل ساخته نشده. تا خیلی راحت بدون هیچ دردسری صداش بکنی و خودش ایمیل رو برات بفرسته. بدون نیاز به کانفیگ خاصی. جواب توی software stack هست.

استک نرم‌افزار توی نود.جی‌اس خیلی سبکه. خب استک نرم افزار دیگه چیه؟ همه‌ی اجزایی که به صورت پیشفرض توی یه نرم‌افزار قرار دارن و با همدیگه کار می‌کنن. به زبون نود.جی‌اسی بخوام بگم، میگم اونجایی که npm install میزنی جزء استک نرم‌افزار نمیشه. بلکه همه ماژول ها و قابلیت های built-in نود.جی‌اس جزء استک یه نرم‌افزار نود.جی‌اسی هست.

در حالی که استک php خیلی بزرگ و سنگینه. اون سروری که روش برنامه php خودتو روش اجرا میکنی شامل اجزای زیادی هست.

  • اولیش interpreter خود php
  • دومیش وب سروری اپاچی یا nginx
  • این وب سرور باید یجوری با interpreter پی اچ پی ارتباط برقرار بکنه، به همین خاطر FPM رو داری
  • ممکنه حتی یه MySQL هم روی همون هوست نصب کرده باشی.
  • و ...

اون کاری که php برای ارسال یه ایمیل انجام میده چیه؟ میاد محتوای ایمیلی که باید ارسال بشه رو پردازش میکنه و اونو به stdin (جریان استاندارد ورودی) sendmail میده. که همین کار رو ما با ماژول nodemailer میتونیم انجام بدیم.

تنها تفاوتشون اینه که تو php میای تنظیمات ارسال ایمیل رو توی فایل php.ini انجام میدی ولی اینجا تو تنظیمات خود Nodemailer. ولی اگه sendmail نصب نباشه روی سروری که روش نود.جی‌اس رو اجرا کردی به مشکل میخوری.

به همین خاطر بهتره از سرویس های SMTP استفاده بکنی.

۱۰ تا از ارائه دهندگام خدمات SMTP
۱۰ تا از ارائه دهندگام خدمات SMTP

برای استفاده از nodemailer باید یا از یه SMTP استفاده بکنی یا از روش های دیگه transport کردن استفاده بکنی. اصلا این transport چیه؟

یه آبجکته که به عنوان آرگومان به متد `nodemailer.createTransport` پاس میدی. توی این آبجکت به سری پراپرتی و متد داری. در ادامه با transport بیشتر آشنا میشی.



روش های Transport کردن ایمیل

  • استفاده از یه SMTP خارجی مثل SES (پکیج اون اینه)
  • راه اندازی یه mailserver روی سرور. مثلا بیای sendmail و بقیه بخش هاش رو کانفیگ کنی یا از iredmail استفاده بکنی.

این آبجکت میاد مشخص میکنه که ایمیل رو چجوری باید ارسال بکنه. از طریق چه پورتی، با چه یوز و پسوردی و ... .

روش اول برای ارسال ایمیل اینه که sendmail رو توی لینوکس نصب بکنی و ssl رو هم اوکی بکنی (با یه چیزی مثل letsencrypt) و بعد برای اینکه بتونی یه ایمیل از طریق nodemailer بفرستی باید همچین کدی بزنی:

let transporter = nodemailer.createTransport({ sendMail: true, newline: 'unix', path: '/usr/sbin/sendmail' }); transporter.sendMail({ from: 'node.js.developers.kh@gmail.com', to: 'you.developers.kh@gmail.com', subject: 'please attention.', text: 'we use sendmail.' }, (error, info) => { if (error) console.error(error); else console.log(info); });

یا اینکه اگه یه mailserver داری، میتونی ازش استفاده بکنی:

let transport = { host: MAIL_HOST, port: MAIL_PORT, secure: false, auth: { user: MAIL_USERNAME, pass: NODE_PASSWORD } }; let transporter = nodemailer.createTransport(this.transport); // transporter.sendMail({ 'from', 'to', 'subject', 'html' }, (error, info) => { /*...*/ })

به همین سادگی به همین تمیزی. دیگه نیاز ندارید کار شاخی بکنید. در ضمن اگه هم قصد استفاده از gmail دارید بهتون بگم که داک خود nodemailer گفته استفاده کردی ارور داد یا کار نکرد برو سراغ smtp.

ارسال ایمیل در نود جی‌اسnodemailerSMTPnode jsاموزش کار با ماژول nodemailer
برنانه نویس، مدرس، محقق. عاشق انیمه هستم و دنبال چالش ها جدید.
شاید از این پست‌ها خوشتان بیاید