Retrieve Emails using C# .NET

عند بناء تطبيق لمعالجة البريد الإلكتروني، فإن إحدى الخطوات الحاسمة هي إعداد وظيفة موثوقة وسريعة لاسترجاع الرسائل من صندوق الوارد. في هذه المقالة، سنستكشف كيفية الاستفادة من قوة مكتبة .NET لاسترجاع رسائل البريد الإلكتروني في C# عبر POP3 وIMAP وEWS وGraph API، ومن تخزين صناديق البريد غير المتصلة بمختلف الصيغ على سبيل المثال لملف pst. تتضمن المقالة أمثلة واضحة على الكود يمكنك استخدامها لاختبار وظيفة المكتبة.

.NET API لاسترجاع الرسائل

لاستخراج الرسائل من خادم أو تخزين صندوق بريد في C#، سنستخدم Aspose.Email for .NET. هذه مكتبة API قوية تتيح للمطورين العمل مع رسائل البريد الإلكتروني في تطبيقاتهم .NET. توفر مجموعة شاملة من الميزات للعمل مع رسائل البريد الإلكتروني في مجموعة متنوعة من السيناريوهات. تبسط العمل في إنشاء وتعديل وتحويل رسائل البريد الإلكتروني، والعمل مع مرفقات البريد الإلكتروني، والتقاويم، وجهات الاتصال، وما إلى ذلك، فضلاً عن استخراج الرسائل من صناديق البريد وإدارة محتواها وفقًا للاحتياجات. يمكنك بسهولة تنفيذ API في مشروعك بعد تحميل DLL الخاصة بها أو تثبيتها من NuGet باستخدام الأمر التالي:

PM> Install-Package Aspose.Email

استرجاع رسائل البريد الإلكتروني عبر POP3

مع بروتوكول POP3، يتم تحميل رسائل البريد الإلكتروني من الخادم إلى نظامك المحلي، مما يتيح الوصول السهل والإدارة. يمكن دمج وظيفتها بسهولة في تطبيقك. تُستخدم فئة Aspose.Email for .NET POP3Client لإنشاء كائن عميل POP3 للتلاعب بالرسائل.

توضح عينة الكود والخطوات أدناه كيفية استخدام عميل POP3 للاتصال بخادم بريد POP3، واسترجاع قائمة الرسائل، واسترجاع محتوى الرسالة:

  1. أولاً، يتم إنشاء كائن عميل POP3.
  2. نظرًا لأن بروتوكول POP3 لا يحتوي على تشفير مدمج، مما يجعل نقل رسائل البريد الإلكتروني عرضة للاعتراض والوصول غير المصرح به، فإنه يقوم بعد ذلك بتعيين خاصية SecurityOptions لاستخدام آلية أمان مع الخادم.
  3. داخل حلقة foreach، يقوم الكود بالتكرار على كل رسالة في صندوق البريد واسترجاع محتوى الرسالة باستخدام طريقة FetchMessage.
using Aspose.Email;
using Aspose.Email.Clients.Pop3;
using (var client = new Pop3Client("pop3.server.com", "username", "password"))
{
client.SecurityOptions = SecurityOptions.Auto;
foreach (var messageInfo in pop3Client.ListMessages())
{
var eml = client.FetchMessage(messageInfo.SequenceNumber);
}
}

يمكنك تعديل الكود بشكل أكبر ليتناسب مع احتياجاتك المحددة واستخدام محتوى الرسالة المسترجع بالطريقة المرغوبة مع ميزات أخرى من مكتبة .NET.

استخدام IMAP لاسترجاع الرسائل

IMAP هو بروتوكول شائع آخر يقدم نهجًا أكثر تزامنًا ومرونة للوصول إلى رسائل البريد الإلكتروني. على عكس POP3، يحتفظ IMAP برسائل البريد الإلكتروني على الخادم بينما يسمح لك بإدارتها وتنظيمها من أجهزة متعددة. التغييرات التي يتم إجراؤها على جهاز واحد تنعكس عبر جميع الأجهزة، مما يوفر تجربة بريد إلكتروني سلسة ومتسقة.

تقدم Aspose.Email for .NET لك فئة ImapClient وخصائصها للاتصال بخادم بريد IMAP وإدارة رسائل البريد الإلكتروني في المجلدات. ستوضح عينة الكود التالية مع الخطوات كيفية الحصول على الرسائل من الخادم:

  1. قم بإنشاء مثيل IMAPClient.
  2. قم بتوفير أمان اتصالات البريد الإلكتروني الخاصة بك عن طريق إعداد خاصية SecurityOptions.
  3. عرض رسائل البريد الوارد من خلال استرجاعها واحدة تلو الأخرى.
using Aspose.Email;
using Aspose.Email.Clients.Imap;
using (var client = new ImapClient("imap.server.com", "username", "password"))
{
client.SecurityOptions = SecurityOptions.Auto;
client.SelectFolder("Inbox");
foreach (var messageInfo in client.ListMessages())
{
var eml = client.FetchMessage(messageInfo.UniqueId);
}
}

استرجاع الرسائل من خادم MS Exchange باستخدام EWSClient

للتطبيقات التي تتفاعل مع خوادم Microsoft Exchange، توفر Aspose.Email for .NET دعمًا لـ EWS. يسهل هذا البروتوكول العمليات المتقدمة، بما في ذلك استرجاع رسائل البريد الإلكتروني، وإدارة التقويم، ومزامنة جهات الاتصال. يعد EWS مفيدًا بشكل خاص للتطبيقات التي تتطلب تكاملًا مع بيئات Microsoft Exchange.

للاتصال بخادم Exchange واسترجاع رسائل البريد الإلكتروني، سنستخدم فئة IEWSClient من واجهة برمجة التطبيقات .NET. توضح عينة الكود المقدمة أدناه كيفية إنشاء اتصال بصندوق البريد، وقائمة الرسائل داخل مجلد البريد الوارد، ثم استرجاع كل رسالة بريد إلكتروني فردية. تتيح هذه العملية للمطورين الوصول الفعال إلى بيانات البريد الإلكتروني والتلاعب بها برمجيًا ضمن تطبيقاتهم .NET.

  1. قم بتهيئة عميل EWS عن طريق استدعاء طريقة GetEWSClient من مكتبة C#.
  2. قم بالتكرار خلال رسائل البريد الوارد في حلقة foreach باستخدام طريقة ListMessages.
  3. استرجع محتوى رسالة البريد الإلكتروني باستخدام طريقة FetchMessage.
using Aspose.Email;
using Aspose.Email.Clients.Exchange.WebService;
using (var client = EWSClient.GetEWSClient("https://outlook.office365.com/ews/exchange.asmx", "UserName", "Password"))
{
foreach(var msgInfo in client.ListMessages(client.MailboxInfo.InboxUri)
{
var eml = client.FetchMessage(msgInfo.UniqueUri);
}
}

اعتمادًا على متطلبات تطبيقك، يمكنك إجراء معالجة إضافية على متغير eml المسترجع. يمكن أن تشمل هذه معالجة رؤوس البريد الإلكتروني، استخراج المرفقات، تحليل محتوى البريد الإلكتروني، أو أي عمليات ذات صلة أخرى باستخدام واجهة برمجة التطبيقات الغنية بالميزات لدينا.

Microsoft Graph لاستخراج الرسائل من الخادم

تتيح Aspose.Email for .NET للمطورين الاستفادة من قوة واجهة برمجة التطبيقات Microsoft Graph لاسترجاع رسائل البريد الإلكتروني. من خلال دمج Graph API، يحصل تطبيقك على نقطة وصول موحدة لاسترجاع رسائل البريد الإلكتروني، والتقاويم، وجهات الاتصال. تعتبر هذه التكاملات ذات قيمة كبيرة عندما تبحث عن إنشاء تطبيقات شاملة ومتعددة الوظائف.

توضح عينة الكود والخطوات المذكورة أدناه كيفية استخدام واجهة برمجة التطبيقات Microsoft Graph للعمل مع مجلدات البريد الإلكتروني والرسائل. يتم إنشاء عميل Graph، واسترجاع مجلد “البريد الوارد”، والتكرار عبر الرسائل في ذلك المجلد لاسترجاع كل رسالة.

  1. أنشئ مثيل عميل Graph عن طريق استدعاء طريقة GetClient من فئة GraphClient، مع تمرير tokenProvider و"معرف المستأجر" كمعاملات.
  2. استخدم طريقة ListFolders من العميل لاسترجاع مجموعة من جميع المجلدات.
  3. احصل على مجلد “البريد الوارد” باستخدام طريقة FirstOrDefault LINQ على مجموعة المجلدات. تعبر التعبير اللامي عن التحقق مما إذا كانت خاصية DisplayName لمجلد تتطابق مع “البريد الوارد”.
  4. تكرار الرسائل في المجلد المسترجع.ItemId عن طريق استدعاء ListMessages على العميل.
  5. لكل رسالة، استرجع تفاصيل الرسالة عن طريق استدعاء FetchMessage على العميل، مع تمرير msgInfo.ItemId كمعامل.
using Aspose.Email;
using Aspose.Email.Clients.Graph;
// Create a Graph client
using (var client = GraphClient.GetClient(tokenProvider, "tenant ID"))
{
var folder = client.ListFolders().FirstOrDefault(folder => folder.DisplayName.Equals("Inbox"));
foreach (var msgInfo in client.ListMessages(folder.ItemId))
{
var msg = client.FetchMessage(msgInfo.ItemId);
}
}

استخراج الرسائل من تخزين صندوق البريد غير المتصل

تمكن مكتبتنا الشاملة C# من إنشاء تطبيقات تتمتع بقدرات تخزين صناديق البريد غير المتصلة. من خلال استخدام هذه الميزة، يمكنك تنزيل وتخزين رسائل البريد الإلكتروني محليًا، مما يضمن الوصول حتى بدون اتصال بالإنترنت. هذه ميزة مفيدة بشكل خاص للمستخدمين الذين يحتاجون إلى وصول سلس إلى البريد الإلكتروني أثناء التنقل.

تعمل المكتبة بشكل جيد مع التخزين المستقل بمختلف الصيغ، مثل PST وMBOX وOLM وTGZ، لكن في هذه المقالة سننظر في مثال لاسترجاع رسائل البريد الإلكتروني من PST.

لتنفيذ هذه الوظيفة مع الوصول غير المتصل إلى معلومات صندوق البريد، سنستخدم فئة PersonalStorage من المكتبة. فيما يلي عينة الكود والخطوات للحصول على الرسائل من ملف pst:

  1. ابدأ بإنشاء كائن تخزين شخصي جديد عن طريق استدعاء طريقة FromFile من فئة PersonalStorage وتمرير مسار ملف PST كمعامل.

  2. قم بتهيئة متغير باسم “folder” عن طريق استدعاء طريقة GetSubfolder على خاصية RootFolder من كائن التخزين الشخصي. مرر السلسلة “Inbox” كمعامل لتحديد اسم المجلد للاسترجاع.

  3. استخدم حلقة foreach للتكرار على كل كائن “msgInfo” في المجموعة التي تم إرجاعها بواسطة طريقة EnumerateMessages من كائن “folder”.

  4. داخل الحلقة، أنشئ متغيرًا جديدًا باسم “msg” عن طريق استدعاء طريقة ExtractMessage على كائن التخزين الشخصي. مرر خاصية EntryIdString من كائن “msgInfo” الحالي كمعامل لتحديد الرسالة التي يجب استخراجها.

سيقوم الكود بإجراء العمليات المحددة في الخطوات 3 و4 لكل رسالة في المجلد.

using Aspose.Email.Mapi;
using Aspose.Email.Storage.Pst;
using (var pst = PersonalStorage.FromFile("storage.pst"))
{
var folder = pst.RootFolder.GetSubfolder("Inbox");
foreach(var msgInfo in folder.EnumerateMessages())
{
var msg = pst.ExtractMessage(msgInfo.EntryIdString);
}
}

الخلاصة

في هذه المقالة، تعلمنا كيفية الاستفادة من قوة Aspose.Email for .NET لاسترجاع رسائل البريد الإلكتروني. مع دعم لـ POP3 وIMAP وEWS وGraph API، وتخزين صناديق البريد غير المتصلة، تمكن المكتبة من تخصيص وظيفة تطبيقك لتلبية الاحتياجات المحددة. سواء كنت تنشئ تطبيقًا عميلًا، أو أداة تكامل، أو حلاً مخصصًا، فإن واجهة برمجة التطبيقات .NET لدينا تزودك بالأدوات اللازمة لإنشاء تجربة معالجة رسائل سلسة وفعالة. يمكنك استكشاف ميزات أخرى من Aspose.Email باستخدام الوثائق. أيضًا، يمكنك نشر استفساراتك في منتدانا.

انظر أيضًا