إرسال البريد الإلكتروني باستخدام C# (.NET): مكتبة System.Net.Mail

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

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

ابدأ الدورة

إرسال البريد الإلكتروني باستخدام C# (.NET): دليل كامل لـ System.Net.Mail

في التطوير الحديث على منصة .NET، يتم حل مهمة إرسال رسائل البريد الإلكتروني باستخدام المكتبة القياسية System.Net.Mail. هذه الأداة المدمجة لا تتطلب تثبيت حزم NuGet إضافية وتوفر واجهة برمجة تطبيقات مرنة لإنشاء وإرسال رسائل البريد عبر خادم SMTP. في هذه المقالة، سنقوم بتحليل جميع المكونات الرئيسية للمكتبة بالتفصيل، وسنستعرض أمثلة على الكود، ومعالجة الأخطاء، وأفضل الممارسات.



الفئات الرئيسية للمكتبة

تتضمن المكتبة System.Net.Mail ثلاث فئات رئيسية:

  • SmtpClient — مسؤولة عن الاتصال بخادم SMTP وإرسال الرسائل.
  • MailMessage — تمثل الرسالة نفسها: الموضوع، النص، المرسل، المستلمين، المرفقات.
  • Attachment — تسمح بإضافة ملفات إلى الرسالة.


مثال أساسي لإرسال البريد الإلكتروني

لنستعرض سيناريو بسيطًا: إرسال رسالة نصية عبر خادم SMTP الخاص بـ Gmail. يرجى ملاحظة أنه للعمل مع Gmail، ستحتاج إلى كلمة مرور التطبيق (App Password) بسبب المصادقة الثنائية.

using System;using System.Net;using System.Net.Mail;

class Program{ static void Main() { var fromAddress = new MailAddress("your@gmail.com", "اسمك"); var toAddress = new MailAddress("recipient@example.com", "المستلم"); const string fromPassword = "كلمة_مرور_التطبيق_خاصتك"; const string subject = "رسالة اختبار من .NET"; const string body = "مرحبًا! هذه الرسالة مرسلة باستخدام C#.";

var smtp = new SmtpClient { Host = "smtp.gmail.com", Port = 587, EnableSsl = true, DeliveryMethod = SmtpDeliveryMethod.Network, UseDefaultCredentials = false, Credentials = new NetworkCredential(fromAddress.Address, fromPassword) };

using (var message = new MailMessage(fromAddress, toAddress) { Subject = subject, Body = body }) { smtp.Send(message); }

Console.WriteLine("تم إرسال الرسالة!"); }}


إرسال رسائل HTML مع مرفقات

غالبًا ما يكون مطلوبًا إرسال رسالة بتنسيق HTML مع ملفات مرفقة. للقيام بذلك، قم بتعيين الخاصية IsBodyHtml = true واستخدم المجموعة Attachments.

using (var message = new MailMessage(fromAddress, toAddress)){    message.Subject = "تقرير الشهر";    message.IsBodyHtml = true;    message.Body = "<h2>مرحبًا!</h2><p>تقريرك في المرفق.</p>";

// إضافة مرفق var attachment = new Attachment(@"C:\\reports\\report.pdf"); message.Attachments.Add(attachment);

smtp.Send(message);}


الإرسال غير المتزامن (async/await)

للإرسال غير المحظور في التطبيقات الحديثة، استخدم SendMailAsync. هذا مهم بشكل خاص في تطبيقات الويب (ASP.NET Core) وبرامج سطح المكتب ذات واجهة المستخدم.

public async Task SendEmailAsync(){    using (var message = new MailMessage(fromAddress, toAddress)    {        Subject = "إرسال غير متزامن",        Body = "تم إرسال الرسالة بشكل غير متزامن"    })    {        await smtp.SendMailAsync(message);    }}


معالجة الاستثناءات

عند العمل مع خوادم البريد، قد تحدث أخطاء: بيانات اعتماد غير صحيحة، مهلات، مشاكل في DNS. قم دائمًا بتغليف الإرسال في try-catch.

try{    smtp.Send(message);    Console.WriteLine("تم الإرسال بنجاح.");}catch (SmtpException ex){    Console.WriteLine($"خطأ SMTP: {ex.StatusCode} - {ex.Message}");}catch (Exception ex){    Console.WriteLine($"خطأ عام: {ex.Message}");                    

توصيات