OLM から PST への変換
Contents
[
Hide
]
OLM は Microsoft Outlook for Mac が使用するデータベース形式です。OLM ファイルはメールメッセージ、カレンダーデータ、連絡先、アプリ設定を保存しますが、Windows 用 Outlook ではサポートされていません。Mac 用 Outlook から Windows 用 Outlook にメールボックスを移行するには、OLM ファイルを Outlook の PST 形式です。Aspose.Email for .NET を使用すれば、Microsoft Outlook をインストールせずにコードだけで実行できます。
変換の仕組み
OLM ファイルを PST に変換する手順は次のとおりです:
- インスタンスを作成します OlmStorage ソース OLM ファイルを開くクラス。
- 以下を使用して新しい PST ファイルを作成します PersonalStorage.Create メソッド。
- 実装する
GetContainerClassメソッドはメッセージクラスを対応するフォルダー(コンテナ)クラスにマッピングし、各フォルダーが PST 内で正しいタイプで作成されるようにします。 - 実装する
AddToPstメソッドで、OLM ファイルから各フォルダーとメッセージを再帰的に読み取ります - 使用するのは EnumerateMapiMessages - そして同じ順序で PST に追加します。使用するのはAddSubFolderおよびAddMessageのメソッド FolderInfo.
コードサンプル
以下のコードは OLM ファイルを PST に変換する方法を示します。
Main メソッド:
// create an instance of OlmStorage class to open the source OLM
using (var olm = new OlmStorage("my.olm"))
// create a new PST file
using (var pst = PersonalStorage.Create("my.pst", FileFormatVersion.Unicode))
{
// recursively read each folder and its messages
// and add them to the PST in the same order
foreach (var olmFolder in olm.FolderHierarchy)
{
AddToPst(pst.RootFolder, olmFolder);
}
}
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";
}
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);
}
}
逆方向(PST から OLM)への変換はサポートされていません。OLM ファイルは常に Mac 用 Outlook がアカウントを追加しメールサーバーと同期したときに作成されます。