יצירת ושמירת קבצי Outlook
Aspose.Email תומך ביצירת קבצי הודעת Outlook (MSG). מאמר זה מסביר כיצד:
- צור ושמור הודעות Outlook
- צור קבצי MSG עם קבצים מצורפים
- צור קבצי MSG עם גוף RTF
- שמור הודעה במצב טיוטה
צור ושמור הודעות Outlook
ה MailMessage מחלקה מכילה את Save() מתודה שיכולה לשמור קבצי Outlook MSG לכונן או ל‑stream. הקטעי קוד למטה יוצרים מופע של ה‑ MailMessage מחלקה, הגדר מאפיינים כמו from, to, subject ו‑body. ה‑ Save() מתודה מקבלת את שם הקובץ כארגומנט. בנוסף, ניתן ליצור הודעות Outlook עם a גוף RTF דחוס באמצעות ה- MapiConversionOptions.
- צור מופע חדש של ה‑ MailMessage מחלקה ומגדירה את המאפיינים From, To, Subject ו‑Body.
- הפעל את MapiMessage מחלקה FromMailMessage מתודה שמקבלת את האובייקט של ה‑ MailMessage סוג. ה‑ FromMailMessage מתודה ממירה את MailMessage ל‑ MapiMessage (MSG).
- הפעל את MapiMessage.Save() מתודה לשמירת קובץ MSG.
כתוב את הקוד הבא באירוע הלחיצה של כפתור בבקר של יישום Windows.
// Create an instance of the MailMessage class
MailMessage mailMsg = new MailMessage();
// Set from, to, subject and body properties
mailMsg.From = "sender@domain.com";
mailMsg.To = "receiver@domain.com";
mailMsg.Subject = "This is test message";
mailMsg.Body = "This is test body";
// Create an instance of the MapiMessage class and pass MailMessage as argument
MapiMessage outlookMsg = MapiMessage.FromMailMessage(mailMsg);
// Save the message (MSG) file
string strMsgFile = @"CreatingAndSavingOutlookMessages_out.msg";
outlookMsg.Save(dataDir + strMsgFile);
צור קבצי MSG עם קבצים מצורפים
בדוגמה למעלה, יצרנו קובץ MSG פשוט. Aspose.Email גם תומך בשמירת קבצי הודעות עם קבצים מצורפים. כל שעליך לעשות הוא להוסיף את הקבצים המצורפים ל‑ MailMessage מופע. הוסף קבצים מצורפים על ידי קריאה למתודה Add() על MailMessage.Attachments אוסף. הוסף ListBox לטופס שנוצר למעלה והוסף שני כפתורים, אחד להוספת קבצים מצורפים ואחד להסרתם. היישום שמוסיף קבצים מצורפים פועל כך:
- כאשר לוחצים על הכפתור Add Attachment, מוצגת Open File Dialog שתסייע למשתמשים לעיין ולבחור את הקובץ המצורף.
- כאשר קובץ נבחר, הנתיב המלא מתווסף לרשימה.
- כאשר קובץ MSG נוצר, נתיבי הקבצים המצורפים נלקחים מהרשימה ומתווספים ל- MailMessage.Attachments אוסף.
כתוב את הקוד הבא באירוע לחיצה על הכפתור Add Attachment.
// Open a file open dialog to select the attachment
OpenFileDialog fd = new OpenFileDialog();
// If user selected the file and clicked OK, add the file name and path to the list
if (fd.ShowDialog() == DialogResult.OK)
{
lstAttachments.Items.Add(fd.FileName);
}
כאשר הכפתור Remove Attachment נלחץ, הסר את הפריטים שנבחרו מה-ListBox. כתוב את הקוד הבא באירוע לחיצה על הכפתור Remove Attachment.
// Check if the user has selected any item in the attachments listbox
if (lstAttachments.SelectedItems.Count > 0)
{
// Remove the selected attachment from the listbox
lstAttachments.Items.RemoveAt(lstAttachments.SelectedIndex);
}
הוסף את הקוד להוספת הקבצים המצורפים ל- MailMessage מופע. הקוד הסופי לפונקציית Write Msg נכתב כמפורט להלן.
// File name for output MSG file
string strMsgFile;
// Open a save file dialog for saving the file and Add filter for msg files
SaveFileDialog fd = new SaveFileDialog();
fd.Filter = "Outlook Message files (*.msg)|*.msg|All files (*.*)|*.*";
// If user pressed OK, save the file name + path
if (fd.ShowDialog() == DialogResult.OK)
{
strMsgFile = fd.FileName;
}
else
{
// If user did not selected the file, return
return;
}
// Create an instance of MailMessage class
MailMessage mailMsg = new MailMessage();
// Set from, to, subject and body properties
mailMsg.From = txtFrom.Text;
mailMsg.To = txtTo.Text;
mailMsg.Subject = txtSubject.Text;
mailMsg.Body = txtBody.Text;
// Add the attachments
foreach (string strFileName in lstAttachments.Items)
{
mailMsg.Attachments.Add(new Attachment(strFileName));
}
// Create an instance of MapiMessage class and pass MailMessage as argument
MapiMessage outlookMsg = MapiMessage.FromMailMessage(mailMsg);
outlookMsg.Save(strMsgFile);
צור קובצי MSG עם גוף RTF
ניתן גם ליצור קבצי Outlook Message (MSG) עם גופי טקסט עשיר (RTF) באמצעות Aspose.Email. גוף ה‑RTF תומך בעיצוב טקסט. צור אחד על‑ידי הגדרת ה‑ MailMessage.HtmlBody מאפיין. כאשר ממירים a MailMessage מופע ל‑ MapiMessage במקרה זה, גוף ה‑HTML מומר ל‑RTF. כך נשמר העיצוב של גוף האימייל.
הדוגמה הבאה יוצרת קובץ MSG עם גוף RTF. יש כותרת אחת, ועיצוב מודגש וקו תחתי מיושמים בגוף ה‑HTML. עיצוב זה נשמר כאשר ה‑HTML מומר ל‑RTF.
// Create an instance of the MailMessage class
MailMessage mailMsg = new MailMessage();
// Set from, to, subject and body properties
mailMsg.From = "from@domain.com";
mailMsg.To = "to@domain.com";
mailMsg.Subject = "subject";
mailMsg.HtmlBody = "<h3>rtf example</h3><p>creating an <b><u>outlook message (msg)</u></b> file using Aspose.Email.</p>";
MapiMessage outlookMsg = MapiMessage.FromMailMessage(mailMsg);
outlookMsg.Save(dataDir + "CreatingMSGFilesWithRTFBody_out.msg");
כיווץ RTF עבור גוף הודעת MAPI
הערה: תהליך הכיווץ עשוי להאט את הביצועים בעת יצירת הודעות. בהבנת עובדה זו והגדרת דגל הכיווץ בהתאם לדרישות ספציפיות ולשיקול בין גודל הקובץ לביצועים, מפתחים יכולים לנהל בצורה יעילה את יצירת קבצי MSG ו‑PST בעבודה עם הודעות דוא"ל.
כווץ RTF נועד להפחית את גודל ההודעה וכן את קבצי PST (Personal Storage Table) שנוצרו, שבהם משתמש Microsoft Outlook לאחסון הודעות דוא"ל ונתונים אחרים. באמצעות כיווץ RTF בעת קביעת גוף ההודעה, מפתחים יכולים להפחית את כמות הזיכרון הנדרשת לאחסון הודעות דוא"ל או לייעל את רוחב הפס ברשת בעת העברת הודעות.
למטרה זו, עוצבו שתי מתודות בעלות עומס יתר:
-
MapiMessageItemBase.SetBodyContent(string content, BodyContentType contentType, bool compression): מתודה זו מאפשרת לך להגדיר את תוכן גוף ההודעה באמצעות מחרוזת תוכן ספציפית והגדרת סוג תוכן הגוף (למשל, טקסט פשוט, HTML, וכו’). הפרמטר האופציונלי compression הוא ערך שמציין האם יש לדחוס את התוכן באמצעות דחיסת RTF. אם פרמטר ה-compression הוא true, התוכן יידחס, מה שמוביל לגודל הודעה קטן יותר.
-
MapiMessageItemBase.SetBodyRtf(string content, bool compression): מתודה זו מגדירה במפורש את תוכן גוף ההודעה בפורמט RTF. הפרמטר content הוא מחרוזת המייצגת את תוכן ה-RTF שיוגדר כגוף ההודעה. כפי במתודה הקודמת, פרמטר ה-compression מקביע האם יש להחיל דחיסת RTF על התוכן. אם compression הוא true, תוכן ה-RTF יידחס כדי להפחית את הגודל.
דוגמת הקוד הבאה מציגה כיצד להגדיר גוף HTML ולשמור אותו דחוס:
var htmlBody = "<html><body><h1>This is the body content</h1></body></html>";
var msg = new MapiMessage("from@domain.com", "to@domain.com", "subject", "body");
// set the html body and keep it compressed
// this will reduce the message size
msg.SetBodyContent(htmlBody, BodyContentType.Html, true);
קיימת גם MapiConversionOptions.UseBodyCompression מאפיין. כאשר מאפיין זה פעיל, דחיסת גוף RTF מיושמת במהלך המרת MailMessage ל-MapiMessage, מה שמביא לגודל קובץ MSG קטן יותר. זה מוצג בדוגמת הקוד למטה:
var message = MailMessage.Load(fileName);
var options = new MapiConversionOptions();
options.UseBodyCompression = true;
var msg = MapiMessage.FromMailMessage(message, options);
שמור הודעה במצב טיוטה
הודעות אימייל נשמרות כטיוטות כאשר מישהו החל לערוך אותן אך רוצה לחזור אליהן כדי להשלים אותן מאוחר יותר. Aspose.Email תומך בשמירת הודעות אימייל במצב טיוטה על ידי הגדרת דגל הודעה. להלן קוד לדוגמה לשמירת הודעת Outlook (MSG) כטיוטה.
// Change properties of an existing MSG file
string strExistingMsg = @"message.msg";
// Load the existing file in MailMessage and Change the properties
MailMessage msg = MailMessage.Load(dataDir + strExistingMsg, new MsgLoadOptions());
msg.Subject += "NEW SUBJECT (updated by Aspose.Email)";
msg.HtmlBody += "NEW BODY (updated by Aspose.Email)";
// Create an instance of type MapiMessage from MailMessage, Set message flag to un-sent (draft status) and Save it
MapiMessage mapiMsg = MapiMessage.FromMailMessage(msg);
mapiMsg.SetMessageFlags(MapiMessageFlags.MSGFLAG_UNSENT);
mapiMsg.Save(dataDir + "SavingMessageInDraftStatus_out.msg");