OLM to PST

Microsoft OutlookはWindowsおよびMacオペレーティングシステムで利用可能です。 Outlook for MacとOutlook for Windowsは、ユーザーのメールをデータファイルに保存します。これらのデータファイルは、すべてのメール、連絡先、タスク、メモ、およびカレンダー項目で構成されています。 Outlook for MacはOLMファイルにメールボックスアイテムを保持しますが、これはOutlook for Windowsではサポートされていません。したがって、Outlook for Mac(OLM)ファイルをOutlook for Windowsで開くことはできません。Outlook for MacからOutlook for Windowsにメールボックスを移行する場合は、Outlook for MacのOLMファイルをOutlook PSTファイル形式に変換する必要があります。 この記事では、C#でOLMファイルをPSTファイルにプログラム的に変換する方法について説明します。

この記事では以下のトピックが取り上げられます:

C# APIを使用してOLMをPSTに変換する

OLMをPSTに変換するには、Aspose.Email for .NETを使用します。これは、メールを操作し、ThunderbirdやOutlookなどの一般的なメールクライアントのファイル形式で作業するためのメール処理APIです。こちらからAPIのDLLをダウンロードするか、以下のコマンドを使用してNuGetからインストールできます。

PM> Install-Package Aspose.Email

OLMをPSTに変換する手順

次の手順に従ってOLMファイルをPSTに変換できます:

  • 新しいPSTファイルを作成し、書き込み用に開く
  • ソースOLMファイルを開く
  • OLMから各メールボックスアイテムを読み取り、それをPSTに書き込む

次のセクションでは、これらの手順をC#に変換し、OLMからPSTにファイルを変換する方法について説明します。

C#を使用してプログラム的にOLMをPSTに変換する

以下の手順に従って、C#でOLMをPSTにプログラム的に変換できます:

  • まず、OlmStorageクラスのインスタンスを作成してソースOLMを開きます。
  • 次に、Createメソッドを使用して新しいPSTファイルを作成します。
  • さらに、メッセージクラスをフォルダクラスにマッピングするGetContainerClass関数を作成し、メッセージクラスに対応するコンテナクラスを持つPSTフォルダを作成できるようにします。
  • 最後に、EnumerateMapiMessagesメソッドを使用してOLMから各フォルダとそのメッセージを再帰的に読み取り、AddSubFolderおよびAddMessageメソッドを使用して同じ順序でPSTに追加するAddToPst関数を作成します。

以下のコードサンプルは、C#でOLMをPSTに変換する方法を示しています。

メインメソッド:

// 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);
}
}

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);
}
}

無料APIライセンスを取得する

無料の一時ライセンスを使用して、評価制限なしにAspose.Email for .NETを使用できます。

結論

この記事では、C# .NETでOLMをPSTに変換する方法を学びました。また、OLMストレージからメッセージを読み取り、アイテムをPSTストレージにプログラム的に書き込む方法も見ました。それに加えて、ドキュメントを訪れてAspose.Email for .NETの他の機能を探ることができます。質問がある場合は、フォーラムに投稿できます。

参考文献