Baca File MS Outlook PST di C# .NET

PST (Personal Storage Table) adalah format file penyimpanan yang digunakan oleh berbagai program Microsoft seperti MS Outlook, Exchange, dan Windows Messaging. File PST dapat menyimpan pesan, kontak, kalender, acara, dll. Dalam kasus tertentu, Anda mungkin perlu mengurai file PST dan mengekstrak data darinya secara terprogram. Untuk mencapainya, artikel ini menunjukkan cara membaca file MS Outlook PST menggunakan C# .NET. Khususnya, Anda akan mempelajari cara mengekstrak informasi folder, membaca email, dan mengambil kontak dari file PST.

.NET API untuk Membaca File Outlook PST

Aspose.Email for .NET adalah API pemrosesan email canggih yang memungkinkan Anda membuat dan mengirim email dari dalam aplikasi .NET. Selain itu, ini mendukung bekerja dengan email populer dan format file penyimpanan. Kami akan menggunakan API ini untuk membaca informasi folder, pesan, dan kontak dari file PST. Anda dapat mengunduh API atau menginstalnya melalui NuGet.

PM> Install-Package Aspose.Email -Version 22.3.0

Baca File Outlook PST di C# .NET

Berikut ini adalah langkah-langkah untuk membaca file PST dan mengekstrak informasinya di C#.

Contoh kode berikut menunjukkan cara mengurai file PST dan mengambil informasi folder.

// Muat file PST
PersonalStorage personalStorage = PersonalStorage.FromFile("PersonalStorage.pst");

// Dapatkan informasi folder
FolderInfoCollection folderInfoCollection = personalStorage.RootFolder.GetSubFolders();

// Jelajahi setiap folder untuk menampilkan informasinya
foreach (FolderInfo folderInfo in folderInfoCollection)
{
    Console.WriteLine("Folder: " + folderInfo.DisplayName);
    Console.WriteLine("Total items: " + folderInfo.ContentCount);
    Console.WriteLine("Total unread items: " + folderInfo.ContentUnreadCount);
    Console.WriteLine("-----------------------------------");
}

Baca Email dari File PST di C#

Email adalah entitas utama yang disimpan dalam file PST oleh MS Outlook. Jadi mari kita lihat cara membaca pesan email dari file PST di C#.

Contoh kode berikut menunjukkan cara mengekstrak pesan dari file PST di C# .NET.

// Muat file Outlook PST
PersonalStorage pst = PersonalStorage.FromFile("PersonalStorage.pst");

// Dapatkan Format Tampilan file PST
Console.WriteLine("Display Format: " + pst.Format);

// Dapatkan informasi folder dan pesan
Aspose.Email.Storage.Pst.FolderInfo folderInfo = pst.RootFolder;

// Panggil metode rekursif untuk mengekstrak file msg dari setiap folder
ExtractMsgFiles(folderInfo, pst);

///<summary>
/// Ini adalah metode rekursif untuk menampilkan isi folder
///</summary>
///<param name="folderInfo"></param>
///<param name="pst"></param>
private static void ExtractMsgFiles(Aspose.Email.Storage.Pst.FolderInfo folderInfo, PersonalStorage pst)
{
    // Menampilkan nama folder
    Console.WriteLine("Folder: " + folderInfo.DisplayName);
    Console.WriteLine("==================================");
            
    // Ulangi semua pesan di folder ini
    Aspose.Email.Storage.Pst.MessageInfoCollection messageInfoCollection = folderInfo.GetContents();
    foreach (Aspose.Email.Storage.Pst.MessageInfo messageInfo in messageInfoCollection)
    {
        Console.WriteLine("Saving message {0} ....", messageInfo.Subject);
                
        // Dapatkan pesan dalam contoh MapiMessage
        MapiMessage message = pst.ExtractMessage(messageInfo);
                
        // Simpan pesan ini ke disk dalam format pesan
        message.Save(message.Subject.Replace(":", " ") + ".msg");
                
        // Simpan pesan ini untuk streaming dalam format pesan
        MemoryStream messageStream = new MemoryStream();
        message.Save(messageStream);
    }

    // Panggil metode ini secara rekursif untuk setiap subfolder
    if (folderInfo.HasSubFolders == true)
    {
        foreach (Aspose.Email.Storage.Pst.FolderInfo subfolderInfo in folderInfo.GetSubFolders())
        {
            ExtractMsgFiles(subfolderInfo, pst);
        }
    }
}

Ekstrak Kontak dari File PST di C#

Dalam kasus tertentu, Anda mungkin perlu mengekstrak informasi kontak yang disimpan dalam file PST. Langkah-langkah berikut menunjukkan cara mengakses kontak di file PST di C#.

Contoh kode berikut menunjukkan cara mengekstrak kontak dari file PST di C#.

// Muat file Outlook PST
PersonalStorage personalStorage = PersonalStorage.FromFile("SampleContacts.pst");

// Dapatkan folder Kontak
FolderInfo folderInfo = personalStorage.RootFolder.GetSubFolder("Contacts");

// Ulangi semua kontak di folder ini
MessageInfoCollection messageInfoCollection = folderInfo.GetContents();

foreach (MessageInfo messageInfo in messageInfoCollection)
{
    // Dapatkan informasi kontak
    MapiMessage mapi = personalStorage.ExtractMessage(messageInfo);
    
    // Transmisikan ke MapiContact
    MapiContact contact = (MapiContact)mapi.ToMapiMessageItem();

    // Menampilkan beberapa konten di layar
    Console.WriteLine("Name: " + contact.NameInfo.DisplayName);
    
    // Simpan ke disk dalam format MSG
    if (contact.NameInfo.DisplayName != null)
    {
        MapiMessage message = personalStorage.ExtractMessage(messageInfo);
        
        // Singkirkan karakter ilegal yang tidak dapat digunakan sebagai nama file
        string messageName = message.Subject.Replace(":", " ").Replace("\\", " ").Replace("?", " ").Replace("/", " ");
        message.Save(dataDir + "Contacts\\" + messageName + "_out.msg");
    }
}

Dapatkan Lisensi API Gratis

Anda dapat mencoba Aspose.Email for .NET secara gratis dengan mendapatkan lisensi sementara.

Kesimpulan

Pada artikel ini, Anda telah mempelajari cara membaca file PST secara terprogram di C# .NET. Selain itu, Anda telah melihat cara membaca informasi folder, mengambil email, dan mengekstrak kontak dari file PST di C#. Selain itu, Anda dapat mempelajari lebih lanjut tentang Aspose.Email for .NET menggunakan dokumentasi. Selain itu, Anda dapat membagikan pertanyaan atau pertanyaan Anda di forum kami.

Lihat juga