PST (Kişisel Depolama Tablosu), MS Outlook, Exchange ve Windows Messaging gibi farklı Microsoft programları tarafından kullanılan bir depolama dosyası biçimidir. PST dosyaları mesajları, kişileri, takvimleri, etkinlikleri vb. depolayabilir. Bazı durumlarda, bir PST dosyasını ayrıştırmanız ve ondan programlı olarak veri çıkarmanız gerekebilir. Bunu başarmak için bu makale, MS Outlook PST dosyalarının C# .NET kullanılarak nasıl okunacağını gösterir. Özellikle, klasörlerin bilgilerini nasıl çıkaracağınızı, e-postaları nasıl okuyacağınızı ve bir PST dosyasından kişileri nasıl alacağınızı öğreneceksiniz.
- Outlook PST Dosyalarını Okumak için .NET API
- C# ile bir PST Dosyasını Okuyun
- Bir PST Dosyasından E-postaları Okuyun
- Kişileri bir PST Dosyasından Çıkarın
Outlook PST Dosyalarını Okumak için .NET API
Aspose.Email for .NET, .NET uygulamaları içinden e-postalar oluşturup göndermenizi sağlayan güçlü bir e-posta işleme API’sidir. Ayrıca, popüler e-posta ve depolama dosyası biçimleriyle çalışmayı destekler. Bu API’yi, PST dosyalarından klasör bilgilerini, mesajları ve kişileri okumak için kullanacağız. API’yi indirebilir veya NuGet aracılığıyla yükleyebilirsiniz.
PM> Install-Package Aspose.Email -Version 22.3.0
C# .NET’te bir Outlook PST Dosyasını Okuyun
Aşağıdakiler, bir PST dosyasını okuma ve C# dilindeki bilgilerini ayıklama adımlarıdır.
- PersonalStorage.FromFile() yöntemini kullanarak PST dosyasını yükleyin.
- PersonalStorage.RootFolder.GetSubFolders() yöntemini kullanarak PST’deki klasör koleksiyonunu alın.
- Ad, öğe sayısı vb. gibi klasörlerin bilgilerini alın.
Aşağıdaki kod örneği, bir PST dosyasının nasıl ayrıştırılacağını ve klasör bilgilerinin nasıl alınacağını gösterir.
// PST dosyasını yükle
PersonalStorage personalStorage = PersonalStorage.FromFile("PersonalStorage.pst");
// Klasör bilgilerini al
FolderInfoCollection folderInfoCollection = personalStorage.RootFolder.GetSubFolders();
// Bilgilerini görüntülemek için her klasöre göz atın
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("-----------------------------------");
}
C# dilinde bir PST Dosyasından E-postaları Okuyun
E-postalar, MS Outlook tarafından PST dosyalarında depolanan başlıca varlıklardır. Şimdi C# dilinde bir PST dosyasından e-posta mesajlarının nasıl okunacağını görelim.
- PersonalStorage.FromFile() yöntemini kullanarak PST dosyasını yükleyin.
- PersonalStorage.RootFolder özelliğini kullanarak kök klasöre erişin.
- FolderInfo.GetContents() yöntemini kullanarak ileti toplama alın.
- Koleksiyondaki mesajlar arasında dolaşın ve her mesajın alanlarını okuyun.
Aşağıdaki kod örneği, C# .NET’te bir PST dosyasından iletilerin nasıl ayıklanacağını gösterir.
// Outlook PST dosyasını yükleyin
PersonalStorage pst = PersonalStorage.FromFile("PersonalStorage.pst");
// PST dosyasının Ekran Formatını Alın
Console.WriteLine("Display Format: " + pst.Format);
// Klasörleri ve mesaj bilgilerini alın
Aspose.Email.Storage.Pst.FolderInfo folderInfo = pst.RootFolder;
// Her klasörden mesaj dosyalarını ayıklamak için özyinelemeli yöntemi çağırın
ExtractMsgFiles(folderInfo, pst);
///<summary>
/// Bu, bir klasörün içeriğini görüntülemek için özyinelemeli bir yöntemdir
///</summary>
///<param name="folderInfo"></param>
///<param name="pst"></param>
private static void ExtractMsgFiles(Aspose.Email.Storage.Pst.FolderInfo folderInfo, PersonalStorage pst)
{
// Klasör adını göster
Console.WriteLine("Folder: " + folderInfo.DisplayName);
Console.WriteLine("==================================");
// Bu klasördeki tüm iletiler arasında dolaşın
Aspose.Email.Storage.Pst.MessageInfoCollection messageInfoCollection = folderInfo.GetContents();
foreach (Aspose.Email.Storage.Pst.MessageInfo messageInfo in messageInfoCollection)
{
Console.WriteLine("Saving message {0} ....", messageInfo.Subject);
// Mesajı MapiMessage örneğinde alın
MapiMessage message = pst.ExtractMessage(messageInfo);
// Bu mesajı msg formatında diske kaydedin
message.Save(message.Subject.Replace(":", " ") + ".msg");
// msg formatında akış için bu mesajı kaydedin
MemoryStream messageStream = new MemoryStream();
message.Save(messageStream);
}
// Her alt klasör için bu yöntemi yinelemeli olarak çağırın
if (folderInfo.HasSubFolders == true)
{
foreach (Aspose.Email.Storage.Pst.FolderInfo subfolderInfo in folderInfo.GetSubFolders())
{
ExtractMsgFiles(subfolderInfo, pst);
}
}
}
Kişileri C# dilinde bir PST Dosyasından Çıkarın
Bazı durumlarda, kişilerin bir PST dosyasında saklanan bilgilerini çıkarmanız gerekebilir. Aşağıdaki adımlar, C# dilinde bir PST dosyasındaki kişilere nasıl erişileceğini gösterir.
- PersonalStorage.FromFile() yöntemini kullanarak PST dosyasını yükleyin.
- PersonalStorage.RootFolder.GetSubFolder(“Contacts”) yöntemini kullanarak kişiler klasörünün referansını alın.
- FolderInfo.GetContents() yöntemini kullanarak kişi koleksiyonunu alın.
- Kişi koleksiyonunda dolaşın ve her kişiyi okuyun veya kaydedin.
Aşağıdaki kod örneği, C# dilinde bir PST dosyasından kişilerin nasıl ayıklanacağını gösterir.
// Outlook PST dosyasını yükleyin
PersonalStorage personalStorage = PersonalStorage.FromFile("SampleContacts.pst");
// Kişiler klasörünü alın
FolderInfo folderInfo = personalStorage.RootFolder.GetSubFolder("Contacts");
// Bu klasördeki tüm kişiler arasında dolaşın
MessageInfoCollection messageInfoCollection = folderInfo.GetContents();
foreach (MessageInfo messageInfo in messageInfoCollection)
{
// İletişim bilgilerini alın
MapiMessage mapi = personalStorage.ExtractMessage(messageInfo);
// MapiContact'a yayınla
MapiContact contact = (MapiContact)mapi.ToMapiMessageItem();
// Bazı içerikleri ekranda göster
Console.WriteLine("Name: " + contact.NameInfo.DisplayName);
// MSG formatında diske kaydet
if (contact.NameInfo.DisplayName != null)
{
MapiMessage message = personalStorage.ExtractMessage(messageInfo);
// Dosya adı olarak kullanılamayan geçersiz karakterlerden kurtulun
string messageName = message.Subject.Replace(":", " ").Replace("\\", " ").Replace("?", " ").Replace("/", " ");
message.Save(dataDir + "Contacts\\" + messageName + "_out.msg");
}
}
Ücretsiz API Lisansı Alın
Geçici bir lisans alarak Aspose.Email for .NET’i ücretsiz olarak deneyebilirsiniz.
Çözüm
Bu makalede, C# .NET’te programlı olarak PST dosyalarını okumayı öğrendiniz. Ayrıca, C# dilinde bir PST dosyasından klasör bilgilerini nasıl okuyacağınızı, e-postaları nasıl alacağınızı ve kişileri nasıl çıkaracağınızı gördünüz. Ayrıca, dokümantasyon kullanarak Aspose.Email for .NET hakkında daha fazlasını keşfedebilirsiniz. Ayrıca sorularınızı veya sorularınızı forumumuzda paylaşabilirsiniz.