
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の他の機能を探ることができます。質問がある場合は、フォーラムに投稿できます。