إرسال البريد الإلكتروني باستخدام JavaScript (Node.js): دليل شامل
يعد إرسال رسائل البريد الإلكتروني إحدى الوظائف الأساسية لأي تطبيق ويب حديث. سواء كانت إشعارات، تأكيد تسجيل، نشرات إخبارية أو استعادة كلمة المرور - فإن القدرة على إرسال البريد الإلكتروني برمجياً ضرورية لكل مطور. في هذه المادة، سنستعرض بالتفصيل كيفية تنظيم إرسال البريد الإلكتروني باستخدام JavaScript (Node.js)، باستخدام المكتبات الشائعة، إعدادات SMTP وأفضل الممارسات.
لماذا إرسال البريد الإلكتروني من Node.js؟
Node.js هي بيئة تشغيل غير متزامنة لـ JavaScript، وهي مناسبة تماماً لمعالجة عدد كبير من الطلبات. يتيح إرسال الرسائل عبر Node.js ما يلي:
- أتمتة إشعارات المستخدمين؛
- دمج النشرات البريدية مع الواجهة الخلفية؛
- معالجة أخطاء الإرسال في الوقت الفعلي؛
- استخدام لغة واحدة (JavaScript) للمشروع بأكمله.
المكتبات الرئيسية لإرسال البريد الإلكتروني في Node.js
يوجد حالياً العديد من المكتبات الموثوقة. دعنا نستعرض الأكثر شيوعاً:
1. Nodemailer
Nodemailer هو المعيار الفعلي لإرسال البريد الإلكتروني في Node.js. تدعم المكتبة SMTP، القوالب المدمجة، المرفقات، رسائل HTML و OAuth2. وهي مجانية ولا تتطلب خدمات خارجية.
// التثبيت: npm install nodemailerconst nodemailer = require('nodemailer');
const transporter = nodemailer.createTransport({ host: 'smtp.example.com', port: 587, secure: false, // true للمنفذ 465 auth: { user: 'user@example.com', pass: 'your-password' }});
async function sendMail() { const info = await transporter.sendMail({ from: '"المرسل" <from@example.com>', to: 'to@example.com', subject: 'مرحباً من Node.js', text: 'هذه رسالة اختبارية.', html: '<b>هذه رسالة اختبارية.</b>' }); console.log('تم إرسال الرسالة:', info.messageId);}sendMail().catch(console.error);2. SendGrid (عبر @sendgrid/mail)
SendGrid هي خدمة سحابية للبريد الإلكتروني من Twilio. تتيح مكتبة @sendgrid/mail إرسال الرسائل بسهولة عبر API الخاص بـ SendGrid. وهي مناسبة للمشاريع الكبيرة.
// التثبيت: npm install @sendgrid/mailconst sgMail = require('@sendgrid/mail');sgMail.setApiKey('YOUR_SENDGRID_API_KEY');
const msg = { to: 'recipient@example.com', from: 'sender@example.com', subject: 'إرسال عبر SendGrid', text: 'مرحباً من SendGrid!', html: '<strong>مرحباً من SendGrid!</strong>'};
sgMail.send(msg) .then(() => console.log('تم إرسال الرسالة')) .catch(error => console.error(error));3. Mailgun.js
Mailgun هي خدمة شائعة أخرى للمطورين. توفر مكتبة mailgun.js واجهة سهلة لإرسال الرسائل وإدارة النشرات البريدية.
// التثبيت: npm install mailgun.jsconst formData = require('form-data');const Mailgun = require('mailgun.js');const mailgun = new Mailgun(formData);
const mg = mailgun.client({ username: 'api', key: 'YOUR_MAILGUN_API_KEY'});
mg.messages.create('sandbox.mailgun.org', { from: 'Mailgun Sandbox <postmaster@sandbox.mailgun.org>', to: ['recipient@example.com'], subject: 'مرحباً من Mailgun', text: 'رسالة اختبارية عبر Mailgun.'}).then(msg => console.log(msg)).catch(err => console.error(err));إعداد SMTP لإرسال البريد الإلكتروني
إذا كنت تستخدم خادم بريد خاص بك أو حساب Gmail/Yandex، فستحتاج إلى إعداد SMTP. إليك مثال لحساب Gmail:
const transporter = nodemailer.createTransport({ service: 'gmail', auth: { user: 'your@gmail.com', pass: 'your-app-password' // استخدم كلمة مرور التطبيق }});