إدارة مرفقات البريد الإلكتروني والكيانات المدمجة باستخدام C#
إدارة مرفقات البريد الإلكتروني
المرفق البريدي هو ملف يُرسل مع رسالة بريد إلكتروني. قد يُرسل الملف كرسالة منفصلة أو كجزء من الرسالة التي يُرسل معها. الـ Attachment الفئة تُستخدم مع الـ MailMessage الفئة. تحتوي جميع الرسائل على جسم. بالإضافة إلى الجسم، قد ترغب في إرسال ملفات إضافية. تُرسل هذه كملفات مرفقة وتُمثَل ككائن من الـ Attachment الفئة. يمكنك إرسال أي عدد من المرفقات لكن حجم المرفق يحده خادم البريد. على سبيل المثال، لا يدعم Gmail ملفات أكبر من 10 ميغابايت.
جرّبها!
أضف أو احذف مرفقات البريد الإلكتروني عبر الإنترنت مجانًا باستخدام Aspose.Email Editor App.
إضافة مرفق
لإضافة مرفق إلى بريد إلكتروني، يرجى اتباع الخطوات التالية:
- إنشاء مثيل من الـ MailMessage فئة.
- إنشاء مثيل من الـ Attachment فئة.
- حمّل المرفق إلى الـ Attachment كائن.
- أضف الـ Attachment مثيل إلى الـ MailMessage كائن.
مقتطف الشيفرة التالي يوضح كيفية إضافة مرفق إلى بريد إلكتروني.
// Create an instance of MailMessage class
var eml = new MailMessage
{
From = "sender@from.com",
To = "receiver@to.com",
Subject = "This is message",
Body = "This is body"
};
// Load an attachment
var attachment = new Attachment("1.txt");
// Add Multiple Attachment in instance of MailMessage class and Save message to disk
eml.Attachments.Add(attachment);
eml.AddAttachment(new Attachment("1.jpg"));
eml.AddAttachment(new Attachment("1.doc"));
eml.AddAttachment(new Attachment("1.rar"));
eml.AddAttachment(new Attachment("1.pdf"));
eml.Save("AddAttachments.eml");
فيما سبق، شرحنا كيفية إضافة مرفقات إلى رسالة بريدك الإلكتروني باستخدام Aspose.Email. ما يلي يوضح كيفية إزالة المرفقات وعرض معلومات عنها على الشاشة.
إضافة مرفق مرجعي
المرفق المرجعي هو نوع من المرفقات يتضمن رابطًا أو إشارة إلى ملف أو عنصر، بدلاً من تضمين الملف أو العنصر نفسه في رسالة البريد الإلكتروني. عندما ينقر مستقبلو البريد على المرفق المرجعي، سيتمكنون من الوصول إلى الملف المرتبط إذا كان لديهم الأذونات المناسبة. باستخدام المرفق المرجعي، يمكنك إرسال رسالة بريد إلكتروني أصغر وضمان أن جميع الأشخاص يمكنهم الوصول إلى أحدث نسخة من الملف أو العنصر.
يظهر مقطع الشيفرة أدناه كيفية إضافة مرفق مرجعي إلى بريد إلكتروني. تقوم الشيفرة بتنفيذ الخطوات التالية:
- يقوم بتحميل ملف رسالة البريد الإلكتروني باستخدام MailMessage.Load() طريقة.
- يَنشئ كائن ReferenceAttachment جديد يُدعى refAttach، مع تمرير عنوان URL للمرفق "https://[attach_uri]" كمعامل إلى المُنشئ الخاص به.
- يضبط اسم المرفق إلى "Document.docx" باستخدام Name خاصية كائن refAttach.
- يضبط نوع الموفر للمرفق إلى AttachmentProviderType.OneDrivePro باستخدام الـ ProviderType خاصية كائن refAttach.
- يضبط نوع صلاحية المرفق إلى AttachmentPermissionType.AnyoneCanEdit باستخدام الـ PermissionType خاصية كائن refAttach.
- يضيف كائن refAttach إلى الـ المرفقات مجموعة كائن eml باستخدام الـ Add() طريقة.
var eml = MailMessage.Load("fileName");
var refAttach = new ReferenceAttachment("https://[attach_uri]")
{
Name = "Document.docx",
ProviderType = AttachmentProviderType.OneDrivePro,
PermissionType = AttachmentPermissionType.AnyoneCanEdit
};
eml.Attachments.Add(refAttach);
إزالة المرفق
لإزالة مرفق، اتبع الخطوات التالية:
- إنشاء نسخة من Attachment فئة.
- حمّل المرفق في مثيل Attachment فئة.
- أضف المرفق إلى مثيل MailMessage فئة.
- أزل المرفقات من مثيل Attachment فئة باستخدام MailMessage مثيل الفئة.
مقتطف الشيفرة التالي يوضح كيفية إزالة مرفق.
// Create an instance of MailMessage class
var eml = new MailMessage {From = "sender@sender.com", To = "receiver@gmail.com"};
// Load an attachment
var attachment = new Attachment("1.txt");
eml.Attachments.Add(attachment);
// Remove attachment from your MailMessage
eml.Attachments.Remove(attachment);
عرض اسم ملف المرفق
لعرض اسم ملف المرفق، اتبع الخطوات التالية:
- تكرار عبر المرفقات في رسالة البريد الإلكتروني وحفظ كل مرفق.
- اعرض اسم كل مرفق على الشاشة.
مقتطف الشيفرة التالي يوضح كيفية عرض اسم ملف المرفق على الشاشة.
var eml = MailMessage.Load("Attachments.eml");
foreach (var attachment in eml.Attachments)
{
// Display the the attachment file name
Console.WriteLine(attachment.Name);
}
استخراج مرفقات البريد الإلكتروني
يشرح هذا الموضوع كيفية استخراج مرفق من ملف بريد إلكتروني. مرفق البريد الإلكتروني هو ملف يُرسل مع رسالة بريد إلكتروني. قد يُرسل الملف كرسالة منفصلة أو كجزء من الرسالة التي يُرفق بها. تشمل جميع رسائل البريد خيار إرسال ملفات إضافية. تُرسل هذه كالمرفقات وتُمثَّل كأمثلة من Attachment الفئة. الـ Attachment الفئة تُستخدم مع الـ MailMessage فئة للعمل مع المرفقات. لاستخراج المرفقات من رسالة بريد إلكتروني، اتبع الخطوات التالية:
- إنشاء مثيل من الـ MailMessage فئة.
- حمّل ملف بريد إلكتروني إلى MailMessage كائن.
- إنشاء مثيل من الـ Attachment فئة واستخدمها في حلقة لاستخراج جميع المرفقات.
- احفظ المرفق واعرضه على الشاشة.
|المرفقات المستخرجة في البريد الإلكتروني| | :- | |
| يُظهر المقتطف البرمجي التالي كيفية استخراج مرفقات البريد الإلكتروني.
var eml = MailMessage.Load("Message.eml", new MsgLoadOptions());
foreach (var attachment in eml.Attachments)
{
attachment.Save("MessageEmbedded_out.eml");
Console.WriteLine(attachment.Name);
}
استرجاع Content-Description من المرفق
توفر API الخاصة بـ Aspose.Email القدرة على قراءة محتوى الوصف (Content-Description) من رأس المرفق. يُظهر المقتطف البرمجي التالي كيفية استرجاع وصف المحتوى من المرفق.
var eml = MailMessage.Load("EmailWithAttachEmbedded.eml");
Console.WriteLine(eml.Attachments[0].Headers["Content-Description"]);
تحديد الرسائل المدمجة
مقتطف الشيفرة التالي يوضح كيفية تحديد ما إذا كان المرفق رسالة مضمَّنة أم لا.
var eml = MailMessage.Load("EmailWithAttachEmbedded.eml");
Console.WriteLine(eml.Attachments[0].IsEmbeddedMessage
? "Attachment is an embedded message."
: "Attachment isn't an embedded message.");
استخراج المرفقات من رسائل البريد الإلكتروني الموقعة
تحتوي الرسائل الموقعة على مرفق واحد smime.p7m. يعني ذلك أن البريد مشفر بواسطة SMIME. تنسيق ملف smime.p7m هو التوقيع الرقمي. لرؤية محتويات هذا البريد استخدم الـ RemoveSignature طريقة. تُعيد الطريقة MailMessage كائن بدون توقيع رقمي.
var signedEml = MailMessage.Load("signed.eml");
if (signedEml.IsSigned)
{
for (var i = 0; i < signedEml.Attachments.Count; i++)
{
Console.WriteLine($@"Signed email attachment{i}: {signedEml.Attachments[i].Name}");
}
// The email is signed. Remove a signature.
var eml = signedEml.RemoveSignature();
Console.WriteLine(@"Signature removed.");
for (var i = 0; i < eml.Attachments.Count; i++)
{
Console.WriteLine($@"Email attachment{i}: {eml.Attachments[i].Name}");
}
}
إدارة الصور المضمنة
إضافة صورة مضمنة إلى جسم البريد الإلكتروني
الـ LinkedResource الفئة تُستخدم مع الـ MailMessage فئة لتضمين الكيانات في رسالة البريد الإلكتروني الخاصة بك. لإضافة كيان مدمج، اتبع الخطوات
- إنشاء مثيل من الـ MailMessage فئة.
- حدد قيم من، إلى والموضوع في MailMessage كائن.
- إنشاء مثيل من الـ AlternateView فئة.
- إنشاء مثيل من الـ LinkedResource فئة.
- حمّل كائنًا مضمَّنًا إلى LinkedResourceCollection.
- أضف الكائن المضمَّن المحمَّل إلى MailMessage مثيل الفئة.
- أضف الـ AlternateView مثيل إلى MailMessage مثيل الفئة.
مقاطع الشيفرة أدناه تنتج رسالة بريد إلكتروني تحتوي على نص عادي وجسم HTML وتضمِّن صورة داخل HTML
|صورة مضمَّنة في البريد الإلكتروني| | :- | |
| يمكنك إرسال أي عدد من الكائنات المضمَّنة. حجم المرفق يحده خادم البريد. على سبيل المثال، لا يدعم Gmail ملفات أكبر من 10 ميغابايت. يوضح مقاطع الشيفرة أدناه كيفية تضمين الكائنات في بريد إلكتروني.|
var eml = new MailMessage
{
From = "AndrewIrwin@from.com",
To = "SusanMarc@to.com",
Subject = "This is an email"
};
// Create the plain text part It is viewable by those clients that don't support HTML
var plainView =
AlternateView.CreateAlternateViewFromString("This is my plain text content", null, "text/plain");
// Create the HTML part.To embed images, we need to use the prefix 'cid' in the img src value.
// The cid value will map to the Content-Id of a Linked resource. Thus <img src='cid:barcode'>
// will map to a LinkedResource with a ContentId of 'barcode'.
var htmlView =
AlternateView.CreateAlternateViewFromString("Here is an embedded image.<img src=cid:barcode>", null,
"text/html");
// Create the LinkedResource (embedded image) and Add the LinkedResource to the appropriate view
var barcode = new LinkedResource("1.jpg", MediaTypeNames.Image.Jpeg)
{
ContentId = "barcode"
};
eml.LinkedResources.Add(barcode);
eml.AlternateViews.Add(plainView);
eml.AlternateViews.Add(htmlView);
eml.Save("EmbeddedImage_out.msg", SaveOptions.DefaultMsgUnicode);
إزالة الصورة المضمنة من جسم البريد الإلكتروني
LinkedResourceCollection التي يتم الوصول إليها عبر MailMessage.LinkedResources الخاصية. الـ LinkedResourceCollection توفر المجموعة طريقة لإزالة الكائنات المضمَّنة المضافة إلى رسالة بريد إلكتروني بالكامل. استخدم النسخة المتعددة المعلمات من LinkedResourceCollection.RemoveAt طريقة لإزالة جميع آثار الكائن المضمَّن من رسالة بريد إلكتروني.
يعرض رمز العينة أدناه كيفية إزالة الكائنات المضمَّنة من رسالة بريد إلكتروني.
//Load the test message with Linked Resources
var eml = MailMessage.Load("EmlWithLinkedResources.eml");
//Remove a LinkedResource
eml.LinkedResources.RemoveAt(0, true);
//Now clear the Alternate View for linked Resources
eml.AlternateViews[0].LinkedResources.Clear(true);
إدارة الكيانات المدمجة
الكيان المدمج هو كيان تم إنشاؤه باستخدام تطبيق واحد وتضمينه داخل مستند أو ملف تم إنشاؤه بواسطة تطبيق آخر. على سبيل المثال، يمكن تضمين جدول بيانات Microsoft Excel داخل تقرير Microsoft Word، أو تضمين ملف فيديو داخل عرض تقديمي Microsoft PowerPoint. عندما يتم تضمين ملف، بدلاً من إدراجه أو لصقه في مستند آخر، يحتفظ بصيغته الأصلية. يمكن فتح المستند المدمج في التطبيق الأصلي وتعديله.
استخراج الكيانات المدمجة
يفسر هذا الموضوع كيفية استخراج الكيانات المدمجة من ملف بريد إلكتروني. يمكن فتح المستند المدمج في التطبيق الأصلي وتعديله. لاستخراج كيان مدمج من رسالة بريد إلكتروني، اتبع الخطوات التالية:
- إنشاء مثيل من الـ MailMessage فئة.
- حمّل ملف بريد إلكتروني في MailMessage كائن.
- أنشئ حلقة وأنشئ مثيلاً من Attachment الفئة فيه.
- احفظ المرفق واعرضه على الشاشة.
- حدد عناوين المرسل والمستلم في MailMessage كائن.
- إرسال بريد إلكتروني باستخدام SmtpClient فئة.
المقتطف البرمجي أدناه يستخرج الكائنات المدمجة من بريد إلكتروني.
|الكائنات المدمجة المستخرجة في البريد| | :- | |
| المقتطف البرمجي التالي يوضح لك كيفية استخراج الكائنات المدمجة.
var eml = MailMessage.Load("Message.msg", new MsgLoadOptions());
foreach (var attachment in eml.Attachments)
{
attachment.Save("MessageEmbedded_out.msg");
Console.WriteLine(attachment.Name);
}
استخراج الصور المرتبطة في رسائل HTML
استخراج موارد الصور المرتبطة خارجيًا من جسم HTML وإدراجها في مخرجات HTML باستخدام Aspose.Email لـ .NET. تعيين HtmlSaveOptions.ExtractHTMLBodyResourcesAsAttachments إلى True، وسيتم استخراج الصور المرتبطة وغيرها من الموارد في جسم HTML وإدراجها. يساعد ذلك على الحفاظ على المظهر الأصلي للرسائل التي تحتوي على محتوى مرتبط. يُظهر نموذج الشيفرة التالي كيفية تحميل رسالة بريد إلكتروني، استخراج موارده الخارجية في HTML كمرفقات، وتعامل اختياري مع أحداث عرض الموارد، ثم حفظ الرسالة كملف HTML باستخدام Aspose.Email لـ .NET.
// Load the email message
var mailMessage = MailMessage.Load("input.eml");
// Set options to extract external HTML resources
var options = new HtmlSaveOptions();
options.ExtractHTMLBodyResourcesAsAttachments = true;
// Optional: Handle resource rendering events
options.ResourceHtmlRendering += (sender, e) =>
{
Console.WriteLine(e.PathToResourceFile + " " + ((Attachment)sender).ContentId);
};
// Save the HTML representation of the email
mailMessage.Save("output.html", options);