Объектная модель Outlook Сохранить как MHT Установить часовой пояс

У меня есть необходимость сохранять электронные письма Outlook в формате MHTML (MHT). У меня есть тестовое приложение, которое находит одно письмо по EntryID и успешно сохраняет его в формате MHT.

Моя цель - указать часовой пояс, в котором отображается отправленное время. По умолчанию объектная модель Outlook записывает время в файл MHT, используя часовой пояс на компьютере, на котором записывается MHT. Я хотел бы указать произвольный часовой пояс и соблюдение летнего времени.

Я использую Outlook 2010, Windows XP SP2, Visual Studio 2008 Professional.

Я бы предпочел не изменять время на компьютере обработки, чтобы избежать возможных проблем с другими вещами, которые могут происходить на компьютере одновременно. Однако мне, возможно, придется пойти по этому пути.

Я надеялся изменить часовой пояс объекта Application, но свойство Application.TimeZones.CurrentTimeZone только для чтения. Я не нашел метод Set(). Попытка присвоить CurrentTimeZone приводит к этой ошибке: Property or indexer 'Microsoft.Office.Interop.Outlook._TimeZones.CurrentTimeZone' cannot be assigned to -- it is read only

//strPst = @"D:\aaa.pst";
//strEntryId = "0000000007840E169496284E947388623A8A9F48C4012000";

//Prepare Session
Microsoft.Office.Interop.Outlook.Application objApplication = new Microsoft.Office.Interop.Outlook.Application();
Microsoft.Office.Interop.Outlook._NameSpace objNameSpace = null;
objNameSpace = objApplication.GetNamespace("MAPI");
objNameSpace.Logon(null, null, false, false);
objApplication.Session.AddStore(strPst);

//Get PST ID
string strPstId = "";
foreach (Store store in objNameSpace.Stores)
{
    if (store.FilePath == strPst)
    {
        strPstId = store.StoreID;
    }
}

try
{
    //Get item
    object xi = objNameSpace.GetItemFromID(strEntryId, strPstId);

    //Get item as MailItem
    MailItem mi = objNameSpace.GetItemFromID(strEntryId, strPstId) as MailItem;
    if (mi != null) 
    { 
        //mi.Display(null); 

        //Get time zone UTC-1200
        Microsoft.Office.Interop.Outlook.TimeZones tzs = objApplication.TimeZones;
        Microsoft.Office.Interop.Outlook.TimeZone tz = tzs[1];
        //Console.WriteLine(tz.Name);

        //Set time zone 
        objApplication.TimeZones.CurrentTimeZone = tz;

        //Save As MHT
        mi.SaveAs(@"D:\test.mht", OlSaveAsType.olMHTML);

     //...

     }
 }

0 ответов

Другие вопросы по тегам