إرسال البريد الإلكتروني باستخدام TypeScript: مكتبة nodemailer
Nodemailer هي الوحدة الأكثر شيوعًا لإرسال رسائل البريد الإلكتروني من Node.js و TypeScript. تتيح لك إرسال البريد الإلكتروني عبر SMTP، وكذلك عبر خدمات النقل المدمجة (SendGrid, Mailgun وغيرها). تدعم المكتبة TypeScript بشكل كامل (بما في ذلك التوصيف) وتعمل مع كل من الرسائل النصية ورسائل HTML والمرفقات والتشفير.
لماذا نحتاج nodemailer؟
- إرسال رسائل المعاملات (تأكيد التسجيل، استعادة كلمة المرور).
- إرسال الإشعارات (على سبيل المثال، بعد الطلب على الموقع).
- التكامل مع نماذج الاتصال.
- أتمتة التقارير (تفريغ البيانات اليومي).
التثبيت
npm install nodemailernpm install @types/nodemailer --save-devالوظائف الأساسية
- نقل SMTP — الإعداد عبر أي خادم SMTP (Gmail, Yandex, Mail.ru).
- دعم HTML والنص — يمكن إرسال نص عادي أو قوالب HTML جميلة.
- المرفقات — ملفات، صور، PDF.
- النقل التدفقي — إرسال ملفات كبيرة دون تحميلها في الذاكرة.
- التوصيف — دعم كامل لـ TypeScript (واجهات للخيارات).
مثال على الكود بلغة TypeScript
import nodemailer from 'nodemailer';
interface MailOptions { from: string; to: string; subject: string; text?: string; html?: string;}
async function sendEmail(options: MailOptions): Promise<void> { const transporter = nodemailer.createTransport({ host: 'smtp.gmail.com', port: 587, secure: false, auth: { user: 'your-email@gmail.com', pass: 'your-app-password' } });
const info = await transporter.sendMail(options); console.log('Email sent:', info.messageId);}
// الاستخدامsendEmail({ from: 'noreply@example.com', to: 'user@example.com', subject: 'Hello from TypeScript', html: '<h1>Welcome!</h1><p>This is a test email.</p>'});متى تستخدم nodemailer؟
المكتبة مثالية لتطبيقات الخادم على Node.js/TypeScript، خاصةً مع Express, Next.js أو Nest.js. إذا كنت بحاجة إلى إعداد إرسال البريد الإلكتروني بسرعة دون تكوينات معقدة — فإن nodemailer هو الخيار الأفضل. كما أنها مناسبة للخدمات المصغرة والمهام الخلفية (على سبيل المثال، باستخدام Bull أو Agenda).
ملاحظات هامة
- بالنسبة لـ Gmail، استخدم كلمة مرور التطبيق (وليس كلمة المرور الرئيسية).
- بالنسبة للإنتاج، استخدم متغيرات البيئة (على سبيل المثال،
process.env.SMTP_PASS). - لا تنس معالجة الأخطاء:
try/catchإلزامي.
Nodemailer هو المعيار الفعلي لإرسال البريد الإلكتروني في TypeScript. خفيف، موثوق، وذو توثيق ممتاز.