Hello,
We are converting Outlook messages (msg) to PDF by going through the HTML format.
To format the sending date, we use :
mhtOptions.FormatTemplates[MhtTemplateName.DateTime] = String.Concat(Thread.CurrentThread.CurrentCulture.DateTimeFormat.LongDatePattern, " ", Thread.CurrentThread.CurrentCulture.DateTimeFormat.LongTimePattern);
It works well for the sending date (correct format, correct time zone) for classic emails.
However, with appointment emails, the date format for the Start and End fields is correct, but there is a one-hour time difference.
Source code :
Thread.CurrentThread.CurrentCulture = new CultureInfo(“fr-FR”);
FileStream docStream = new FileStream(inputFile, FileMode.Open, FileAccess.Read, FileShare.ReadWrite);
MemoryStream ms = new MemoryStream();
MhtSaveOptions mhtOptions = Aspose.Email.SaveOptions.DefaultMhtml;
mhtOptions.MhtFormatOptions = MhtFormatOptions.WriteHeader | MhtFormatOptions.WriteCompleteEmailAddress | MhtFormatOptions.RenderCalendarEvent | MhtFormatOptions.RenderTaskFields | MhtFormatOptions.RenderVCardInfo;
mhtOptions.FormatTemplates[“From”] = mhtOptions.FormatTemplates[“From”].Replace(“From:”, “Da:”);
mhtOptions.FormatTemplates[MhtTemplateName.From] = mhtOptions.FormatTemplates[MhtTemplateName.From].Replace(“From”, “De”);
mhtOptions.FormatTemplates[MhtTemplateName.Cc] = mhtOptions.FormatTemplates[MhtTemplateName.Cc].Replace(“Cc”, “Cc”);
mhtOptions.FormatTemplates[MhtTemplateName.Bcc] = mhtOptions.FormatTemplates[MhtTemplateName.Bcc].Replace(“Bcc”, “Bcc”);
mhtOptions.FormatTemplates[MhtTemplateName.To] = mhtOptions.FormatTemplates[MhtTemplateName.To].Replace(“To”, “A”);
mhtOptions.FormatTemplates[MhtTemplateName.Subject] = mhtOptions.FormatTemplates[MhtTemplateName.Subject].Replace(“Subject”, “Objet”);
mhtOptions.FormatTemplates[MhtTemplateName.Sent] = mhtOptions.FormatTemplates[MhtTemplateName.Sent].Replace(“Sent”, “Envoyé le”);
mhtOptions.FormatTemplates[MhtTemplateName.DateTime] = String.Concat(currentCulture.DateTimeFormat.LongDatePattern, " ", currentCulture.DateTimeFormat.LongTimePattern);
mhtOptions.FormatTemplates[MhtTemplateName.DateTime] = String.Concat(Thread.CurrentThread.CurrentCulture.DateTimeFormat.LongDatePattern, " ", Thread.CurrentThread.CurrentCulture.DateTimeFormat.LongTimePattern);
mhtOptions.FormatTemplates[MhtTemplateName.ShowTimeAs] = mhtOptions.FormatTemplates[MhtTemplateName.ShowTimeAs].Replace(“Show Time As”, “Afficher la disponibilité”);
mhtOptions.FormatTemplates[MhtTemplateName.Location] = mhtOptions.FormatTemplates[MhtTemplateName.Location].Replace(“Location”, “Emplacement”);
mhtOptions.FormatTemplates[MhtTemplateName.Start] = mhtOptions.FormatTemplates[MhtTemplateName.Start].Replace(“Start”, “Début”);
mhtOptions.FormatTemplates[MhtTemplateName.End] = mhtOptions.FormatTemplates[MhtTemplateName.End].Replace(“End”, “Fin”);
mhtOptions.FormatTemplates[MhtTemplateName.Importance] = mhtOptions.FormatTemplates[MhtTemplateName.Importance].Replace(“Importance”, “Importance”);
mhtOptions.FormatTemplates[MhtTemplateName.Organizer] = mhtOptions.FormatTemplates[MhtTemplateName.Organizer].Replace(“Organizer”, “Organisateur”);
mhtOptions.FormatTemplates[MhtTemplateName.Recurrence] = mhtOptions.FormatTemplates[MhtTemplateName.Recurrence].Replace(“Recurrence”, “Périodicité”);
mhtOptions.FormatTemplates[MhtTemplateName.RecurrencePattern] = mhtOptions.FormatTemplates[MhtTemplateName.RecurrencePattern].Replace(“Recurrence Pattern”, “Critère de périodicité”);
mhtOptions.FormatTemplates[MhtTemplateName.RequiredAttendees] = mhtOptions.FormatTemplates[MhtTemplateName.RequiredAttendees].Replace(“Required Attendees”, “Participants obligatoires”);
var mapiMessage = MapiMessage.Load(docStream, new MsgLoadOptions());
mapiMessage.Save(ms, mhtOptions);
mapiMessage.Save(“c:\temp\message.html”, mhtOptions);
…/…
In Message.html, the Start and End times are found with a one-hour time difference.