
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
- Kroki do konwersji OLM na PST
- Konwersja OLM na PST programowo za pomocą C#
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.