استفاده از gmail در nodemailer

گردآوری و تالیف : مهدی عقیقی
تاریخ انتشار : 22 بهمن 1398
دسته بندی ها : نود جی اس

Nodemailer تقریبا پرطرفدارترین کتابخانه node.js برای ارسال ایمیل هست، و در طرف دیگر جیمیل هم جزء دو سرویس ایمیل پرطرفدار جهان می‌باشد که تعداد زیادی هوادار دارد. پس به نظر طبیعی می‌رسه که شما این دو ابزار رو با هم ترکیب کنید و با استفاده از سرورهای جیمیل در برنامه node خودتون ایمیل بفرستین، این مقاله هم دقیقا در همین رابطه‌ست.

نصب Nodemailer

در قدم اول ما نیاز به نصب nodemailer داریم.

Npm install –save nodemailer

یا با استفاده از yarn

Yarn add nodemailer

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

Const nodemailer = require(‘nodemailer’);

پیکربندی اکانت جیمیل

خب چیز بعدی که نیاز هست؛ یک اکانت جیمیله که مسلما ما توی این مقاله به ساختن اکانت جیمیل نمی‌پردازیم چون شما باید همین الان چند تا ازش داشته باشین.

اگر اکانت گوگل‌تون دارای Two Factor Authentication نیست برای دسترسی برنامه‌تون به اکانت جیمیل‌تون مراحل زیر رو دنبال کنید : 

سایت جیمیل رو باز کنید و بالا سمت راست صفحه روی ایکون پروفایل‌تون کلیک کنید و سپس روی Manage your Google Account  بزنید.

بعد از پنل سمت چپ صفحه روی Security کلیک کنید و بیاید تا پایین صفحه.

گزینه Allow less secure apps رو به راحتی فعال کنید و به بخش بعدی این مقاله برید.

استفاده از gmail در nodemailer

اما اگر اکانت گوگل‌تون درای Two Factor Authentication هست شما باید یه پسوورد مختص برنامه خودتون درست کنید.

مثل بالا توی Mange Your Google Account در پنل سمت چپ صفحه روی security کلیک کنید.

از اون‌جا در بخش Singing In To Google روی App Passwords بزنید.

استفاده از gmail در nodemailer

دو Select Box براتون میاره که روی Select App کلیک کنید و گزینه‌ی آخر یعنی (Other (Custom Name کلیک کنید و نام برنامه‌ی مورد نظر خودتون رو بنویسید مثلا: MyNodeApp

و Generate رو بزنید و هر جا ما از هر پسوردی استفاده کردیم شما از اون پسووردی که گرفتید استفاده کنید.

راه اندازی یک ترنسپورتر (Transporter) آبجکت و یک پیام برای ارسال

حالا که ما جفت ابزارها رو اماده برای استفاده داریم باید اطلاعات اکانت گوگل رو برای ساخت یک آبجکت ترنسپورتر ( برای ارسال ایمیل استفاده میشه ) استفاده کنیم و همین‌طور پیکربندی یک پیام برای ارسال رو انجام بدیم.

مثال زیر از استفاده‌ی nodemailer و gmail رو ببینید:

const nodemailer = require('nodemailer');

const transporter = nodemailer.createTransport({
  service: 'gmail',
  auth: {
    user: 'chiefspammer@yourgreatdomain.com',
    pass: 'SuperSecretPassword' // از پسوورد خودتون استفاده کنید
  }
});

const mailOptions = {
  from: 'vindication@enron.com',
  to: 'friendsofenron@gmail.com, enemiesofenron@gmail.com,
  subject: 'Invoices due',
  text: 'Dudes, we really need your money.'
};
transporter.sendMail(mailOptions, function(error, info){
  if (error) {
	console.log(error);
  } else {
    console.log('Email sent: ' + info.response);
  }
});

توجه کنید که در callback آخر شما می‌تونید با استفاده از info کارای خوبی کنید، به جای این که فقط ازش لاگ بگیرید مثلا می‌تونید تمام ایمیل هایی که با موفقیت پیامی براشون ارسال کردین رو ارسال کنین یا حتی کار دیگه اینه که می‌تونید تمام ایمیل‌های ارسالی ( چه موفق و چه ناموفق ) رو با status شون سیو کنید تا بعدا بدونید برای هر ایمیل ارسالی چه اتفاقی افتاده.

محدودیت‌ها و مشکلات ممکن

تا اینجای کار خیلی اسون بود درسته؟ برای این که انتظارات رو مقبول نگه داریم کمی در مورد مشکلات این روش صحبت می‌کنیم.

از اون‌جایی که سرویس جیمیل کاملا عمومی هستش و همه می‌تونن استفاده کنن و این سرویس تحت استفاده بسیاری از spammer ها قرار می‌گیره، گوگل محدودیت‌های سختی برای ارسال پیام در روز اعمال میکنه مثلا شما 500 پیام در روز بیشتر نمی‌تونید ارسال کنید اگر از روش بالا که ما یک ایمیل رو به دو دریافت کننده ارسال می‌کنیم استفاده کنید دو تا ایمیل حساب میشه و اگر هم دو تا ایمیل جدا از هم ارسال کنید باز هم دو تا حساب میشه.

اکانت‌هایی که دارای نسخه پولی گوگل هستن محدودیت کمتری دارند و می‌تونند تا 2000 ایمیل در روز ارسال کنند که برای سایت‌های عادی و ایمیل‌های مالی خیلی خوب هستش ولی برای استفاده در کمپین‌های بزرگ که باید برای هزاران یوزر روزانه ایمیل ارسال کنید باید از سرویس‌های مخصوص ایمیل استفاده کنید که می‌تونید لینک یه سری از این سرویس‌ها رو اینجا ببینید.

همین‌طور اگر سرورهای شما در یک موقعیت جغرافیایی دیگه باشه گوگل به راحتی این فعالیت‌ها رو مشکوک شناسایی می‌کنه و ممکنه در ارسال بعضی ایمیل‌ها برای شما مشکل ایجاد کنه.

و اینکه هنگام ارسال پیام از سرورهای در دسترس عموم، به مشکلات مربوط به دریافت برسید که ممکنه مثلا پیام‌های شما دریافت نشه و ...

و در آخر اگر فکر می‌کنید محدودیت‌های جیمیل برای شما مشکل ایجاد میکنه می‌تونید از سرویس‌های مشابه مثل Mailchimp یا sendgrid استفاده کنید.

منبع

مقالات پیشنهادی

  • از NodeJS چه استفاده‌هایی می‌توان کرد؟

    هرکسی از Microsoft، PayPal و Netflix تا فهرستی از سازمانهای مهم از آن استفاده می‌کنند و در سالهای اخیر تعداد استفاده‌کنندگان آن رشد قابل‌توجهی داشته ا...

    علیرضا معمارزاده
  • استفاده از GitHub Desktop با مخازن GitLab

    اگر یک برنامه‌نویس حرفه‌ای هستید که برای کنترل نسخه‌ پروژه‌های خود از git استفاده می‌کنید، قطعا نام GitHub و GitLab به گوشتان خورده‌است. git یک سیستم...

    شهریار شریعتی