إرسال البريد الإلكتروني باستخدام TypeScript: المكتبات وأمثلة الكود

مدرب بايثون أونلاين للمبتدئين

تعلم Python بسهولة دون إرهاق نظري. حل مهام عملية مع التحقق التلقائي واكتب الكود مباشرة في المتصفح.

ابدأ الدورة

إرسال البريد الإلكتروني باستخدام TypeScript: دليل شامل

TypeScript هي مجموعة شاملة مكتوبة بشدة من JavaScript، وتُستخدم بنشاط في تطبيقات الويب الحديثة. يُعد إرسال البريد الإلكتروني إحدى المهام الرئيسية للخلفية والإشعارات والتسويق. في هذه المقالة، سنقوم بتحليل العديد من المكتبات لإرسال البريد الإلكتروني باستخدام TypeScript بالتفصيل، بما في ذلك الإعداد وإرسال الرسائل البسيطة ورسائل HTML، بالإضافة إلى العمل مع المرفقات.



لماذا TypeScript لإرسال البريد الإلكتروني؟

يضيف TypeScript التصنيف (typing)، مما يقلل من عدد الأخطاء في مرحلة التطوير. عند إرسال البريد الإلكتروني، يكون هذا مهمًا بشكل خاص: فالأنواع الصحيحة لمضيف SMTP والمنفذ وبيانات الاعتماد وخيارات الرسالة تساعد في تجنب أخطاء وقت التشغيل. بالإضافة إلى ذلك، يدعم TypeScript بنيات async/await الحديثة، مما يجعل الكود أنظف وأكثر وضوحًا.



المكتبات الرئيسية لإرسال البريد الإلكتروني باستخدام TypeScript

  • nodemailer — المكتبة الأكثر شيوعًا لـ Node.js، متوافقة تمامًا مع TypeScript. تدعم SMTP و Sendmail والمرفقات وقوالب HTML.
  • @sendgrid/mail — العميل الرسمي لـ SendGrid لـ Node.js مع أنواع TypeScript. يستخدم واجهة برمجة تطبيقات SendGrid، ولا يتطلب SMTP.
  • aws-sdk (SES) — خدمة البريد الإلكتروني البسيطة من Amazon. حل قوي للإرسال الجماعي، مع التكامل مع AWS.
  • emailjs — مكتبة خفيفة مع دعم TypeScript، ولكنها أقل شيوعًا.


تثبيت وإعداد nodemailer مع TypeScript

قم بتثبيت الحزم عبر npm:

npm install nodemailernpm install @types/nodemailer --save-dev

مثال أساسي لإرسال البريد الإلكتروني عبر SMTP (Gmail، Yandex، Mail.ru، إلخ):

import nodemailer from 'nodemailer';

interface EmailOptions { to: string; subject: string; text?: string; html?: string;}

async function sendEmail(options: EmailOptions): Promise<void> { const transporter = nodemailer.createTransport({ host: 'smtp.gmail.com', port: 587, secure: false, // true للمنفذ 465 auth: { user: 'your-email@gmail.com', pass: 'your-password-or-app-password', }, });

const mailOptions = { from: '"اسمك" <your-email@gmail.com>', to: options.to, subject: options.subject, text: options.text, html: options.html, };

const info = await transporter.sendMail(mailOptions); console.log('تم إرسال البريد الإلكتروني:', info.messageId);}

// الاستخدامsendEmail({ to: 'user@example.com', subject: 'مرحبًا من TypeScript!', html: '<h1>فحص</h1><p>هذه رسالة HTML.</p>',});

هام: بالنسبة لـ Gmail، قم بتفعيل "الوصول إلى التطبيقات غير الآمنة" أو استخدم كلمة مرور التطبيق (App Password). للإنتاج، من الأفضل استخدام OAuth2.



إرسال البريد الإلكتروني عبر SendGrid باستخدام TypeScript

يوفر SendGrid واجهة برمجة تطبيقات جاهزة لا تتطلب SMTP. التثبيت:

npm install @sendgrid/mail

مثال على الإرسال:

import sgMail from '@sendgrid/mail';

sgMail.setApiKey('YOUR_SENDGRID_API_KEY');

interface SendGridMessage { to: string; from: string; subject: string; html: string;}

async function sendWithSendGrid(message: SendGridMessage): Promise<void> { try { await sgMail.send(message); console.log('تم إرسال البريد الإلكتروني عبر SendGrid'); } catch (error) { console.error('خطأ في الإرسال:', error); }}

sendWithSendGrid({ to: 'user@example.com', from: 'sender@yourdomain.com', subject: 'اختبار SendGrid + TypeScript', html: '<p>هذه الرسالة أُرسلت عبر واجهة برمجة تطبيقات SendGrid.</p>',});


إرسال البريد الإلكتروني مع المرفقات باستخدام TypeScript

يدعم nodemailer المرفقات من أي نوع. مثال مع ملف PDF:

import nodemailer from 'nodemailer';import path from 'path';

async function sendWithAttachment()

توصيات