הכניסה
הפריסה של הודעות דואר אלקטרוני בתכנית היא דרישה נפוצה עבור כלי ארכיון, צינורות תאימות, ושיטות הגירה. Outlook MSG קבצים משתמשים בפורמט הקונטינרטור Compound File Binary (CFB) עם זרמים של נכסים MAPI, בעוד EML קובץ עוקב אחר הסטנדרט MIME. שני פורמטים דורשים ניהול זהיר של קודים, כותרות מעוגלות, ותוספים נטועים.
Aspose.Email FOSS for .NET is a free, MIT-licensed C# library that provides a complete read-write API for MSG and EML messages. It targets .NET 8.0+ and has no dependency on Microsoft Outlook or any native COM interop layer. The library is available as the aspose.email.foss חבילת נוירד.
הפוסט הזה עובד דרך היכולות של הודעות-פריסה הכלול בספריה, מהעלאת קבצים מחוץ לדיסק כדי לחלץ תכונות MAPI בודדות ולהמיר בין פורמטים.
מה כולל
הורדת קבצים MSG
The MapiMessage אתה יכול להעלות הודעה מדרך קובץ או זרם, עם דגל אימות אקראי אופציונלי שמפר את כל בעיות מבניות שנמצאות בקובנה.
// Load an MSG file from disk
var message = MapiMessage.FromFile("meeting-invite.msg");
Console.WriteLine($"Subject: {message.Subject}");
Console.WriteLine($"From: {message.SenderName} <{message.SenderEmailAddress}>");
Console.WriteLine($"Date: {message.MessageDeliveryTime}");
Console.WriteLine($"Recipients: {message.Recipients.Count}");
Console.WriteLine($"Attachments: {message.Attachments.Count}");
החזרה MapiMessage מציג תכונות מסוגות עבור שדות נפוצים כולל Subject, Body, HtmlBody, SenderName, SenderEmailAddress, InternetMessageId, ו MessageDeliveryTime.
הודעות EML
קבצי EML משתמשים בפורמט MIME. MapiMessage.LoadFromEml קבלת מסלול קובץ, א Stream,או א byte[] וחזרה אותו הדבר. MapiMessage אובייקט, כך שאתה משתמש API מאוחדת אחת ללא קשר פורמט המקור.
// Load from a file path
var fromFile = MapiMessage.LoadFromEml("newsletter.eml");
// Load from a stream
using var stream = File.OpenRead("newsletter.eml");
var fromStream = MapiMessage.LoadFromEml(stream);
Console.WriteLine($"Subject: {fromStream.Subject}");
Console.WriteLine($"Body: {fromStream.Body?.Trim()}");
הפארסר פועל על כותרות מעוגלות, Base64 ו- cited-printable העברת קודים, ומשדות רב-מכלול To/Cc.
עבודה עם קבלנים ומספקים
ברגע שהודעה מועברת, קבלנים ותוספים זמינים כקלאסיות מסוגים חזקים. MapiRecipient נוהגים EmailAddress, DisplayName, ו RecipientType כל שדה - כל אחד MapiAttachment מספקת Filename, Data, MimeType, ו ContentId.
var message = MapiMessage.FromFile("report.msg");
foreach (var recipient in message.Recipients)
{
Console.WriteLine($" {recipient.DisplayName} <{recipient.EmailAddress}> (type={recipient.RecipientType})");
}
foreach (var attachment in message.Attachments)
{
Console.WriteLine($" {attachment.Filename} ({attachment.MimeType}, {attachment.Data.Length} bytes)");
File.WriteAllBytes(attachment.Filename!, attachment.Data);
}
תמיכה גם בתגיות הודעות מוטב.כאשר MapiAttachment.IsEmbeddedMessage הוא true, The EmbeddedMessage רכוש חוזר לאחד המזונות MapiMessage כך תוכלו לבדוק שוב ושוב.
גישה לרכוש MAPI
עבור סצנות מתקדמות, כל הודעה, קבלן, ותוספת מציגה את Properties אוסף סוגים MapiPropertyCollection.אתה יכול לקרוא, להוסיף ולסגור תכונות MAPI בודדות על ידי זיהוי הנכס שלהם ואת קוד הטופס.
var message = MapiMessage.FromFile("custom-props.msg");
// Iterate all properties on the message
foreach (var prop in message.Properties.IterProperties())
{
Console.WriteLine($"Tag: 0x{prop.PropertyTag:X8}, Value: {prop.Value}");
}
// Read a specific property
var subject = message.Properties.Get(
(ushort)CommonMessagePropertyId.Subject,
(ushort)PropertyTypeCode.PtypString);
The CommonMessagePropertyId enum מגדיר מזהים נכסים MAPI ידועים עבור מסמנטיקה של הודעות מרכזיות, שדות גוף, כותרות תחבורה ונתונים מטאפוניים.
ההפוך בין MSG ו- EML
ניתן לשמור הודעה מופרזת בחזרה בכל פורמט. Save() כתיבת ה- MSG באט, בעוד SaveToEml() יצירת MIME. זה עושה את הפורמט המרה פשוטה.
// Load an EML and save as MSG
var message = MapiMessage.LoadFromEml("incoming.eml");
message.Save("converted.msg");
// Load an MSG and save as EML
var msg = MapiMessage.FromFile("outgoing.msg");
msg.SaveToEml("exported.eml");
שתי השיטות מקבלות גם את Stream הפרומט לעיבוד בזיכרון ללא נגיעה למערכת הקבצים.
מהיר התחלה
התקן את החבילה מ‑NuGet:
dotnet add package Aspose.Email.FOSSאז תפרסם את ההודעה הראשונה שלך:
using Aspose.Email.Foss.Msg;
// Load an MSG file
var message = MapiMessage.FromFile("sample.msg");
Console.WriteLine($"Subject: {message.Subject}");
Console.WriteLine($"From: {message.SenderName} <{message.SenderEmailAddress}>");
Console.WriteLine($"Date: {message.MessageDeliveryTime}");
Console.WriteLine($"Body length: {message.Body?.Length ?? 0} chars");
// List attachments
foreach (var att in message.Attachments)
Console.WriteLine($" Attachment: {att.Filename} ({att.Data.Length} bytes)");
// Convert to EML
message.SaveToEml("sample.eml");
Console.WriteLine("Saved as EML.");
פורמט תומך
| פורמט | הרחבה | קראו | כתוב |
|---|---|---|---|
| Outlook MSG | .msg | כן | כן |
| MIME (EML) | .eml | כן | כן |
| קובץ בינארי | .cfb | כן | כן |
קוד פתוח & רישיון
Aspose.Email FOSS for .NET is released under the MIT license. The full source code is available on GitHub at דואר אלקטרוני - FOSS-for.Net.תרומות, נושאים וחיפושים מוזמנים.
להתחיל
- מדריך מפתחים - תיעוד מפורט וטיולים
- בסיס ידע FAQs ו- How to Articles
- API רמז – שיעור מלא ושיטה של התייחסות