OLM do PST

Microsoft Outlook jest dostępny dla systemów operacyjnych Windows i Mac. Outlook dla Mac i Outlook dla Windows przechowują e-maile użytkowników w plikach danych. Pliki te składają się ze wszystkich e-maili, kontaktów, zadań, notatek i elementów kalendarza. Outlook dla Mac przechowuje elementy skrzynki pocztowej w pliku OLM, który nie jest obsługiwany przez Outlook dla Windows. Dlatego nie ma możliwości otwarcia pliku Outlook dla Mac (OLM) w Outlook dla Windows. Jeśli chcesz przenieść swoją skrzynkę pocztową z Outlook dla Mac do Outlook dla Windows, musisz przekonwertować plik OLM Outlook dla Mac na format pliku PST. Ten artykuł opisuje jak programowo przekonwertować plik OLM na plik PST w C#.

W tym artykule poruszone zostaną następujące tematy:

C# API do konwersji OLM na PST

Aby przekonwertować OLM na PST, użyjemy Aspose.Email dla .NET. Jest to API do przetwarzania e-maili, które pozwala manipulować e-mailami i pracować z formatami plików popularnych klientów poczty e-mail, takich jak Thunderbird, Outlook itp. Możesz pobrać DLL API lub zainstalować je z NuGet za pomocą następującego polecenia.

PM> Install-Package Aspose.Email

Kroki do konwersji OLM na PST

Możemy przekonwertować plik OLM na PST, wykonując poniższe kroki:

  • Utwórz nowy plik PST i otwórz go do zapisu
  • Otwórz źródłowy plik OLM
  • Przeczytaj każdy element skrzynki pocztowej z OLM i zapisz go w PST

Poniższa sekcja opisuje, jak przekształcić te kroki w C# i konwertować pliki z OLM na PST.

Konwersja OLM na PST programowo za pomocą C#

Możemy przekonwertować OLM na PST programowo w C#, wykonując poniższe kroki:

  • Po pierwsze, utwórz instancję klasy OlmStorage, aby otworzyć źródłowy plik OLM.
  • Następnie utwórz nowy plik PST za pomocą metody Create.
  • Dodatkowo stworzymy funkcję GetContainerClass, która będzie mapować klasę wiadomości na klasę folderu, abyśmy mogli tworzyć foldery PST z klasą kontenera, które odpowiadają klasie wiadomości, którą zawierają.
  • Na koniec stwórz funkcję AddToPst, która rekurencyjnie odczytuje każdy folder i jego wiadomości z OLM za pomocą metody EnumerateMapiMessages i dodaje je do PST w tej samej kolejności za pomocą metod AddSubFolder i AddMessage.

Poniższy przykład kodu pokazuje, jak przekonwertować OLM na PST w C#.

Metoda główna:

// create an instance of OlmStorage class to open source OLM
using (var olm = new OlmStorage("my.olm"))
// create a new PST file
using (var pst = PersonalStorage.Create("my.pst", FileFormatVersion.Unicode))
{
// recursively reads each folder and its messages
// and adds them to the PST in the same order
foreach (var olmFolder in olm.FolderHierarchy)
{
AddToPst(pst.RootFolder, olmFolder);
}
}

Funkcja GetContainerClass:

public string GetContainerClass(string messageClass)
{
if (messageClass.StartsWith("IPM.Contact") || messageClass.StartsWith("IPM.DistList"))
{
return "IPF.Contact";
}
if (messageClass.StartsWith("IPM.StickyNote"))
{
return "IPF.StickyNote";
}
if (messageClass.StartsWith("IPM.Activity"))
{
return "IPF.Journal";
}
if (messageClass.StartsWith("IPM.Task"))
{
return "IPF.Task";
}
if (messageClass.StartsWith("IPM.Appointment") || messageClass.StartsWith("IPM.Schedule.meeting"))
{
return "IPF.Appointment";
}
return "IPF.Note";
}

Funkcja AddToPst:

public void AddToPst(FolderInfo pstFolder, OlmFolder olmFolder)
{
FolderInfo pstSubFolder = pstFolder.GetSubFolder(olmFolder.Name);
foreach (var msg in olmFolder.EnumerateMapiMessages())
{
if (pstSubFolder == null)
{
pstSubFolder = pstFolder.AddSubFolder(olmFolder.Name, GetContainerClass(msg.MessageClass));
}
pstSubFolder.AddMessage(msg);
}
if (pstSubFolder == null)
{
pstSubFolder = pstFolder.AddSubFolder(olmFolder.Name);
}
foreach (var olmSubFolder in olmFolder.SubFolders)
{
AddToPst(pstSubFolder, olmSubFolder);
}
}

Uzyskaj bezpłatną licencję API

Możesz używać Aspose.Email dla .NET bez ograniczeń oceny, korzystając z bezpłatnej tymczasowej licencji.

Podsumowanie

W tym artykule nauczyłeś się, jak przekonwertować OLM na PST w C# .NET. Również zobaczyłeś, jak odczytywać wiadomości z pamięci OLM i programowo zapisywać elementy do pamięci PST. Oprócz tego możesz odwiedzić dokumentację, aby odkryć inne funkcje Aspose.Email dla .NET. W przypadku jakichkolwiek pytań możesz zamieścić je na naszym forum.

Zobacz także