טעינה ושמירת הודעות

טעינת ושמירת הודעות דוא"ל

איתור פורמט קובץ

ה-API של Aspose.Email מספק את היכולת לאתר את פורמט הקובץ של קובץ ההודעה המסופק. ה DetectFileFormat שיטה של FileFormatUtil ניתן להשתמש במחלקה זו כדי להשיג זאת. ניתן להשתמש במחלקות ובשיטות הבאות כדי לאתר את פורמט הקובץ שנטען.

קטע הקוד הבא מראה כיצד לאתר פורמטי קבצים.

טעינת הודעת דוא"ל

כדי לטעון הודעה עם אפשרויות טעינה ספציפיות, Aspose.Email מספקת את LoadOptions מחלקה שניתן להשתמש בה כדלקמן:

שמירת פורמט ההודעה המוטמע במהלך הטעינה

שמירה והמרת הודעות דוא"ל

Aspose.Email מקלה על המרת כל סוג הודעה לפורמט אחר. כדי להדגים תכונה זו, הקוד במאמר זה טוען שלושה סוגי הודעות מהדיסק ושומר אותם בחוזר בפורמטים אחרים. מחלקת הבסיס SaveOptions והמחלקות EmlSaveOptions, MsgSaveOptions, MhtSaveOptions, HtmlSaveOptions להגדרות נוספות בעת שמירה MailMessage ניתן להשתמש בו לשמירת הודעות לפורמטים אחרים. המאמר מראה כיצד להשתמש במחלקות אלה כדי לשמור דואר דוגמה כ:

  • פורמט EML.
  • Outlook MSG.
  • פורמט MHTML.
  • פורמט HTML.

טעינה ושמירת הודעת דוא"ל

קטע הקוד הבא מראה כיצד לטעון הודעת EML ולשמור אותה לדיסק באותו פורמט.

טעינה ושמירת הודעת דוא"ל תוך שמירת הגבולות המקוריים

קטע הקוד הבא מראה כיצד לטעון EML ולשמור כ-EML תוך שמירה על הגבולות המקוריים.

שמירה כ-EML תוך שמירה על צרופות TNEF

קטע הקוד הבא מראה כיצד לשמור כ-EML תוך שמירה על צרופות TNEF.

שמור EML כ-MSG

קטע הקוד הבא מראה כיצד לטעון הודעת EML ולהמיר אותה ל-MSG באמצעות האפשרות המתאימה מ SaveOptions.

שמור EML כ-MSG עם תאריכים משומרים

ה MsgSaveOptions המחלקה מאפשרת לשמור את הודעת המקור כקובץ הודעת Outlook (MSG) תוך שמירה על התאריכים. קטע הקוד הבא מראה כיצד לשמור כ-MSG עם תאריכים משומרים.

שמירת EML כ‑MHTML

ניתן להשתמש באפשרויות שונות של MHTML כדי לקבל את התוצאות הרצויות. קטע הקוד הבא מראה כיצד לטעון הודעת EML לתוך MailMessage ולהמיר אותה ל‑MHTML עם תאריך ההודעה במערכת UTC.

// Set options for MHTML output
MhtSaveOptions saveOptions = SaveOptions.getDefaultMhtml();
// save a message date as UTC date
saveOptions.setPreserveOriginalDate(false);

// Initialize and load an existing EML file
try (MailMessage mailMessage = MailMessage.load(dataDir + "Message.eml")) {
    mailMessage.save(outDir + "Message_out.mhtml", saveOptions);
}

עיצוב כותרות MHT גלובלית בעת שמירה מ‑EML

עם Aspose.Email, ניתן להשתמש באפשרויות העיצוב הגלובליות עבור כותרת Mht. האפשרויות הגלובליות קובעות את העיצוב המשותף של כותרת Mht עבור כל MhtSaveOptions המופעים. תכונה זו נועדה למנוע הגדרת עיצוב עבור כל מופע של MhtSaveOptions.

השתמש בשיטות הבאות של ה GlobalFormattingOptions מחלקה ודוגמת הקוד שלהלן להגדיר את העיצוב של כותרת Mht:

// saveOptions1 and saveOptions2 have the same mht header formatting
MhtSaveOptions saveOptions1 = new MhtSaveOptions();
MhtSaveOptions saveOptions2 = new MhtSaveOptions();

המרת EML ל‑MHTML עם הגדרות אופציונליות

ה MhtSaveOptions המחלקה מספקת אפשרויות נוספות לשמירת הודעות דוא"ל בפורמט MHTML. המונה MhtFormatOptions מאפשר לכתוב מידע נוסף על האימייל לקובץ ה‑MHTML הפלט. השדות הנוספים הבאים ניתנים לכתיבה:

  • WriteHeader - כותב את כותרת האימייל לקובץ הפלט.
  • WriteOutlineAttachments - כותב את הצרופות המתוארות לקובץ הפלט.
  • WriteCompleteEmailAddress - כותב את כתובת האימייל המלאה לקובץ הפלט.
  • NoEncodeCharacters - אין להשתמש בקידוד העברת תווים.
  • HideExtraPrintHeader - מסתיר כותרת הדפסה נוספת מחלק העליון של קובץ הפלט.
  • WriteCompleteToEmailAddress - כותב את כתובת הנמען המלאה לקובץ הפלט.
  • WriteCompleteFromEmailAddress - כותב את כתובת השולח המלאה לקובץ הפלט.
  • WriteCompleteCcEmailAddress - כותב את כתובות האימייל המלאות של כל המקבלים ב‑CC לקובץ הפלט.
  • WriteCompleteBccEmailAddress - כותב את כתובת האימייל המלאה של כל המקבלים ב‑BCC לקובץ הפלט.
  • RenderCalendarEvent - כותב טקסט מאירוע לוח השנה לקובץ הפלט.
  • SkipByteOrderMarkInBody - כותב בתים של Byte Order Mark (BOM) לקובץ הפלט.
  • RenderVCardInfo - כותב טקסט מ‑VCard AlternativeView לקובץ הפלט.
  • DisplayAsOutlook - מציג את השדה From.
  • RenderTaskFields - כותב שדות משימה ספציפיים לקובץ הפלט.
  • ללא - לא צוינה הגדרה.

קטע הקוד הבא מראה כיצד להמיר קבצי EML ל-MHTML עם הגדרות אופציונליות.

הצגת אירועי לוח שנה בזמן המרה ל‑MHTML

ה MhtFormatOptions.RenderCalendarEvent מציג את אירועי היומן בפלט MHTML. קטע הקוד הבא מראה כיצד להציג אירועי לוח שנה בזמן ההמרה ל‑MHTML.

יצוא דוא"ל ל‑MHT ללא תמונות מוטמעות

ייצוא מייל ל-MHT עם אזור זמן מותאם

MailMessage class מספקת את setTimeZoneOffset מאפיין להגדיר אזור זמן מותאם אישית בעת ייצוא ל-MHT. הקטע קוד הבא מראה כיצד לייצא מייל ל-MHT עם אזור זמן מותאם.

MailMessage msg = MailMessage.load(filename, new MsgLoadOptions());
msg.setDate(new Date());

// Set the timezone offset in milliseconds
msg.setTimeZoneOffset(5*60*60*1000);

MhtSaveOptions mhtOptions = new MhtSaveOptions();
mhtOptions.setMhtFormatOptions(MhtFormatOptions.WriteHeader);
msg.save(dataDir + "ExportToMHTWithCustomTimezone_out.mhtml", mhtOptions);

ייצוא מייל ל-EML

הקטע קוד הבא מראה כיצד לייצא מיילים ל-EML.

שמירת מייל כ-HTML

ה HtmlSaveOptions מחלקה המאפשרת לייצא את גוף ההודעה ל-HTML. הקטע קוד הבא מראה כיצד לשמור הודעה כ-HTML.

שמירת הודעת אימייל כ-HTML עם נתיב יחסי למשאבים

בעת ייצוא הודעות אימייל לפורמט HTML, ניתן לבחור לשמור משאבי אימייל עם נתיבים יחסיים. תכונה זו מספקת גמישות גבוהה יותר באופן קישור המשאבים בקובץ ה-HTML הפלט, מה שמקל על שיתוף והצגת המיילים השמורים במערכות שונות. ה- HtmlSaveOptions.UseRelativePathToResources מאפיין המאפשר לשמור משאבים עם נתיבים יחסיים. ערך ברירת המחדל של המאפיין הוא false (המשאבים נשמרים עם נתיבים מוחלטים). כאשר מוגדר ל-true, המשאבים נשמרים עם נתיבים יחסיים. קבצי HTML עם נתיבים יחסיים ניידים יותר וניתן לצפות בהם כראוי ללא תלות במבנה קבצי סביבת האירוח. ניתן לבחור בין נתיבים מוחלטים ליחסיים בהתאם לדרישות. ניתן להגדיר נתיבים מותאמים אישית למשאבים באמצעות ה- ResourceHtmlRenderingHandler אירוע.

שמירה עם נתיב יחסי ברירת מחדל למשאבים

MapiMessage msg = MapiMessage.load(sourceFileName);

HtmlSaveOptions htmlSaveOptions = new HtmlSaveOptions();
htmlSaveOptions.setResourceRenderingMode(ResourceRenderingMode.SaveToFile);
htmlSaveOptions.setUseRelativePathToResources(true);

msg.save("target.html", htmlSaveOptions);

במקרה זה, המשאבים יישמרו בתיקייה [html file name].files, באותו נתיב כמו קובץ ה-.html וה-HTML יתייחס למשאבים דרך נתיבים יחסיים.

שמירה עם נתיב מוחלט למשאבים

MapiMessage msg = MapiMessage.load(sourceFileName);

HtmlSaveOptions htmlSaveOptions = new HtmlSaveOptions();
htmlSaveOptions.setResourceRenderingMode(ResourceRenderingMode.SaveToFile);
htmlSaveOptions.setUseRelativePathToResources(false);

msg.save("target.html", htmlSaveOptions);

כדוגמה הראשונה, המשאבים יישמרו בתיקייה [html file name].files כברירת מחדל, אך ה-HTML יתייחס למשאבים באמצעות נתיבים מוחלטים.

נתיב יחסי מותאם באמצעות אירוע ResourceHtmlRenderingHandler

MapiMessage msg = MapiMessage.load(sourceFileName);

HtmlSaveOptions htmlSaveOptions = new HtmlSaveOptions();
htmlSaveOptions.setResourceRenderingMode(ResourceRenderingMode.SaveToFile);
htmlSaveOptions.setUseRelativePathToResources(false);

htmlSaveOptions.setResourceHtmlRenderingHandler(new ResourceHtmlRenderingHandler() {
    @Override
    public void invoke(Object sender, ResourceHtmlRenderingEventArgs args) {
        if (sender instanceof AttachmentBase) {
            AttachmentBase attachment = (AttachmentBase) sender;
            // Since UseRelativePathToResources = true, you should assign a relative path to the PathToResourceFile property.
            args.setPathToResourceFile("images\\" + attachment.getContentType().getName());
        }
    }
});

msg.save(targetPath + "A Day in the Park.html", htmlSaveOptions);

על ידי שימוש ב- ResourceHtmlRenderingHandler אירוע, אתה יכול להגדיר נתיבים מותאמים יחסיים או מוחלטים למשאבים. בעת התאמת נתיבים עם ה- ResourceHtmlRenderingHandler מטפל אירוע, ומכיוון ש- UseRelativePathToResources מוגדר ל-true, עליך להקצות נתיב יחסי ל- PathToResourceFile מאפיין כדי להבטיח הפנייה נכונה.

שימור אייקונים מותאמים בהודעה בעת המרה ל-HTML

לעתים, ההודעה מכילה קבצים מצורפים משולבים, שמוצגים כתמונות אייקון בגוף ההודעה. הודעות כאלה עלולות לגרום לבעיות בעת המרתן ל-HTML, מכיוון שתמונות האייקון נעלמות. זה קורה מאחר שהאייקונים של הקבצים המצורפים אינם מוחזקים ישירות בהודעה.

המשתמש ב-Aspose.Email יכול להתאים אישית את האייקונים של הקבצים המצורפים בעת המרת ההודעה ל-HTML. לשם כך, ה- HtmlSaveOptions.ResourceHtmlRendering אירוע המשמש להתאמת רינדור קבצי המשאבים (כגון קבצים מצורפים) בעת שמירת הודעת אימייל כקובץ HTML. בדוגמת הקוד למטה, מטפל האירוע משמש להקצאת נתיב דינמי לקבצי המשאבים (איקונים) בהתבסס על סוג התוכן של הקובץ המצורף. זה מאפשר רינדור מותאם של משאבים בפלט HTML בהתאם לסוג קובץ.


 HtmlSaveOptions options = new HtmlSaveOptions();

options.setResourceHtmlRenderingHandler(new ResourceHtmlRenderingHandler() {

   @Override

   public void invoke(Object sender, ResourceHtmlRenderingEventArgs e) {

        AttachmentBase attachment = (AttachmentBase) sender;

        e.setCaption(attachment.getContentType().getName());

       if (attachment.getContentType().getName().endsWith(".pdf")) {

            e.setPathToResourceFile("pdf_icon.png");

       } else if (attachment.getContentType().getName().endsWith(".docx")) {

            e.setPathToResourceFile("word_icon.jpg");

       } else if (attachment.getContentType().getName().endsWith(".jpg")) {

            e.setPathToResourceFile("jpeg_icon.png");

       } else {

            e.setPathToResourceFile("not_found_icon.png");

       }

   }

});

options.setResourceRenderingMode(ResourceRenderingMode.SubstituteFromFile);

String fileName = "message.msg";

MailMessage mailMessage = MailMessage.load(fileName);

mailMessage.save("fileName.html", options);

הגדרת זמן ואזור זמן בעת שמירת EML כ-HTML

משתמשי Aspose.Email יכולים להגדיר את פורמט התצוגה של זמן ואזור זמן ב- HtmlSaveOptions. ה HeadersFormattingOptions מחלקה המאפשרת לציין אפשרויות עיצוב כותרות בעת שמירת MailMessage ל-Mhtml או פורמט Html. השיטות הבאות של HtmlFormatOptions מחלקה המגדירה את השדות שיוצגו בקובץ הפלט:

  • RenderCalendarEvent - מציין שהטקסט מאירוע לוח שנה צריך להיכתב ב-mhtml הפלט.
  • RenderVCardInfo - מציין שהטקסט מ-VCard AlternativeView צריך להיכתב ב-HTML הפלט.

דוגמא קוד הבאה מראה כיצד להגדיר את השעה ואת אזור הזמן בעת שמירת EML כ-HTML:

MailMessage msg = MailMessage.load("fileName");
HtmlSaveOptions options = new HtmlSaveOptions();
options.setHtmlFormatOptions(HtmlFormatOptions.WriteHeader);
options.getFormatTemplates().set_Item("DateTime", "MM d yyyy HH:mm tt");

שמירה כ-HTML ללא הטמעת משאבים

שמירת הודעה כתבנית Outlook (.oft)

הקטע קוד הבא מראה כיצד לשמור הודעה כקובץ תבנית Outlook (.oft).