استخراج محتوى رسالة البريد الإلكتروني باستخدام C#

عرض معلومات البريد الإلكتروني

الـ MailMessage تمثل رسالة بريد إلكتروني وتسمح للمطورين بالوصول إلى خصائص رسالة البريد. معلومات الرأس (المناقشة في استخراج رؤوس البريد الإلكتروني) يمكن استخراجها والتعامل معها بطرق مختلفة. توضح هذه المقالة كيفية عرض معلومات مختارة من رؤوس البريد الإلكتروني وجسم الرسالة على الشاشة. لعرض معلومات البريد الإلكتروني على الشاشة، اتبع الخطوات التالية:

  • إنشاء مثيل من الـ MailMessage فئة.
  • تحميل رسالة بريد إلكتروني إلى الـ MailMessage كائن.
  • عرض محتوى البريد الإلكتروني على الشاشة.

يُظهر المقتطف البرمجي التالي كيفية عرض معلومات البريد الإلكتروني على الشاشة.


// Create MailMessage instance by loading an Eml file
var message = MailMessage.Load("test.eml", new EmlLoadOptions());

// Gets the sender info, recipient info, Subject, htmlbody and textbody
Console.Write("From:");
Console.WriteLine(message.From);
Console.Write("To:");
Console.WriteLine(message.To);
Console.Write("Subject:");
Console.WriteLine(message.Subject);
Console.WriteLine("HtmlBody:");
Console.WriteLine(message.HtmlBody);
Console.WriteLine("TextBody");
Console.WriteLine(message.Body);

استخراج رؤوس البريد الإلكتروني

يمثل رأس البريد الإلكتروني مجموعة معايير موحدة للحقول الرأسية المحددة في الإنترنت وRFC مضمنة في رسائل البريد الإلكتروني على الإنترنت. يمكن تحديد رأس البريد باستخدام MailMessage الفئة. تُعَرَّف أنواع الرؤوس الشائعة في الـ HeaderType فئة. هي فئة مُختومة تعمل كعدد عادي. لاستخراج رؤوس البريد الإلكتروني، اتبع الخطوات التالية:

  1. إنشاء مثيل من الـ MailMessage فئة.
  2. تحميل رسالة بريد إلكتروني في نسخة من MailMessage فئة.
  3. بعد تحميل رسالة البريد الإلكتروني، سنحصل على محتواها الخام.

الـ MailMessage الفئة نفسها تحتوي على خصائص مثل From وTo وCc وSubject وغيرها. يمكن استخراج هذه الخصائص من الرؤوس.

المقتطف البرمجي التالي يوضح كيفية استخراج ترويسات البريد الإلكتروني.

الحصول على قيم الترويسة المفكوكة

يوضح مقطع الكود التالي كيفية الحصول على قيم رؤوس مُفككة الترميز.

// For complete examples and data files, please go to https://github.com/aspose-email/Aspose.Email-for-.NET
MailMessage mailMessage = MailMessage.Load(dataDir + "emlWithHeaders.eml");
string decodedValue = mailMessage.Headers.GetDecodedValue("Thread-Topic");
Console.WriteLine(decodedValue);

استخراج جسم البريد الإلكتروني

الحصول على جسم النص العادي

الـ المحتوى الخاصية تُعيد تمثيل نص عادي لجسم الرسالة.

string plainTextBody = mailMessage.Body;

ملحوظة: إذا كان جزء MIME text/plain موجودًا في الرسالة، فإن الخاصية تُعيد بيانات النص الخاصة به. وإلا، تُعيد المحتوى النصي المنفصل من الـ HtmlBody خاصية بدون علامات HTML.

الحصول على جسم HTML كنص عادي

الـ MailMessage الفئة توفر ميزة استخراج جسم HTML للرسالة كنص عادي. الـ MailMessage الصف يوفر GetHtmlBodyText طريقة تُعيد جسم HTML كنص عادي. تقوم هذه الطريقة بتحليل الـ HtmlBody خاصية وتعيد محتوى نص عادي منفصل متجاهلًا علامات HTML. الـ GetHtmlBodyText طريقة تقبل معلمة منطقية تُظهر ما إذا كان يجب أن يحتوي النص على روابط URL أم لا. تمرير القيمة true يعني أن جسم HTML يجب أن يحتوي على روابط URL.

يظهر مقطع الشيفرة التالي توضيحًا لاستخدام GetHtmlBodyText طريقة لاستخراج جسم HTML للبريد الإلكتروني كنص عادي.

// For complete examples and data files, please go to https://github.com/aspose-email/Aspose.Email-for-.NET
// The path to the File directory.
string dataDir = RunExamples.GetDataDir_Email();

MailMessage mail = MailMessage.Load(dataDir + "HtmlWithUrlSample.eml");

string body_with_url = mail.GetHtmlBodyText(true);// body will contain URL
string body_without_url = mail.GetHtmlBodyText(false);// body will not contain URL

Console.WriteLine("Body with URL: " + body_with_url);
Console.WriteLine("Body without URL: " + body_without_url);

الوصول إلى عنوان Exchange X.500

الـ MailAddress الفئة لديها الـ X500Address خاصية تم إنشاؤها لعرض عناوين Exchange بصيغة X.500 إذا كانت موجودة في الرسالة. توفر وصولًا للقراءة فقط إلى سلسلة عنوان X.500 (Exchange) لـ MailAddress تُعيد مثيلات وتعيد عنوان X.500 إذا كان مدرجًا في بيانات الرسالة الوصفية، وإلا تُعيد null أو فارغ. لا يتطلب التحليل — الخاصية تُعيد سلسلة X.500 الخام.

var mailMessage = MailMessage.Load(fileName);
string exaddr = mailMessage.From.X500Address;