MailKit لـ C# (.NET): دليل شامل مع أمثلة عملية
1. ما هي مكتبة MailKit ولماذا تحتاجها؟
MailKit هي مكتبة قوية ومفتوحة المصدر تعمل عبر المنصات المختلفة للتعامل مع البريد الإلكتروني في بيئة .NET. توفر مجموعة كاملة من الأدوات لإنشاء وإرسال واستقبال ومعالجة رسائل البريد الإلكتروني. على عكس المكتبة القديمة System.Net.Mail، تقدم MailKit واجهة برمجة تطبيقات (API) حديثة، ودعمًا كاملاً لـ MIME (بروتوكولات البريد الإلكتروني المتعددة)، والعمل مع S/MIME و OpenPGP، بالإضافة إلى العمليات غير المتزامنة (Async/Await) الضرورية للتطبيقات عالية التحميل.
لماذا تحتاج MailKit؟ إذا كنت تطور تطبيقات بلغة C# وتواجه الحاجة إلى إرسال بريد إلكتروني مع مرفقات، أو تحليل الرسائل الواردة، أو العمل مع بروتوكولات بريد مختلفة (SMTP، POP3، IMAP)، أو معالجة تنسيقات البريد المعقدة (HTML، مرفقات، توقيعات)، فإن MailKit ستكون أداتك التي لا غنى عنها. تُستخدم هذه المكتبة في بيئات الإنتاج من قبل آلاف الشركات، بما في ذلك Microsoft (في بعض خدماتها الداخلية)، وتدعم .NET Framework، و.NET Core، و.NET 5+، وحتى Xamarin/MAUI.
المزايا الرئيسية لـ MailKit مقارنة بالبدائل الأخرى: دعم كامل لأحدث معايير البريد الإلكتروني (RFC 2045-2049، RFC 2822، RFC 5322)، دعم مدمج لـ SSL/TLS، العمل مع البروكسي، المعالجة التدفقية للمرفقات الكبيرة، والأداء العالي بفضل استخدام System.IO.Pipelines و async/await.
2. طريقة التنصيب (Installation)
يتم تنصيب MailKit عبر مدير الحزم NuGet. قم بتنفيذ أحد الأوامر التالية في نافذة Package Manager Console أو في terminal .NET CLI:
// عبر .NET CLI
dotnet add package MailKit
// عبر Package Manager Console
Install-Package MailKit
// أو عبر NuGet Package Manager في Visual Studio
// ابحث عن "MailKit" وقم بتنصيب أحدث إصدار مستقر
بعد التنصيب، ستتم إضافة تبعية لمكتبة MimeKit (المكتبة الأساسية للتعامل مع رسائل MIME) إلى مشروعك - حيث يتم تنصيبها تلقائيًا كتبعية غير مباشرة.
3. بداية سريعة - مثال عملي بسيط
فيما يلي مثال بسيط لإرسال بريد إلكتروني نصي عبر خادم SMTP الخاص بـ Gmail. ملاحظة: للعمل مع Gmail، يجب استخدام كلمة مرور التطبيق (App Password) أو OAuth 2.0.
using MailKit.Net.Smtp;
using MimeKit;
// إنشاء الرسالة
var message = new MimeMessage();
message.From.Add(new MailboxAddress("المرسل", "sender@gmail.com"));
message.To.Add(new MailboxAddress("المستلم", "recipient@example.com"));
message.Subject = "رسالة اختبار من MailKit";
message.Body = new TextPart("plain") { Text = "مرحبًا! هذه رسالة اختبار." };
// الإرسال عبر SMTP
using (var client = new SmtpClient())
{
client.Connect("smtp.gmail.com", 587, SecureSocketOptions.StartTls);
client.Authenticate("sender@gmail.com", "your-app-password");
client.Send(message);
client.Disconnect(true);
}
Console.WriteLine("تم إرسال البريد الإلكتروني!");
4. أهم الدوال والكلاسات
4.1. SmtpClient.Connect()
التوقيع: Task ConnectAsync(string host, int port, SecureSocketOptions options, CancellationToken cancellationToken = default)
الوظيفة: إنشاء اتصال بخادم SMTP. يحدد المعامل SecureSocketOptions نوع التشفير: None، Auto، SslOnConnect، StartTls.
using var client = new SmtpClient();
await client.ConnectAsync("smtp.mail.ru", 465, SecureSocketOptions.SslOnConnect);
4.2. SmtpClient.Authenticate()
التوقيع: Task AuthenticateAsync(string userName, string password, CancellationToken cancellationToken =