क्या सी # का उपयोग कर एक पीएसटी फ़ाइल पढ़ना संभव है? मैं इसे एक स्टैंडअलोन एप्लिकेशन के रूप में करना चाहता हूं, न कि Outlook एडिन के रूप में (यदि यह संभव है)।क्या मैं सी # में एक आउटलुक (2003/2007) पीएसटी फ़ाइल पढ़ सकता हूं?
तो otherSOquestionssimilar देखा है इस उल्लेख MailNavigator लिए, लेकिन मैं सी # में प्रोग्राम के रूप में यह करने के लिए देख रहा हूँ।
मैंने Microsoft.Office.Interop.Outlook नामस्थान देखा है, लेकिन यह केवल Outlook addins के लिए प्रतीत होता है। LibPST पीएसटी फ़ाइलों को पढ़ने में सक्षम प्रतीत होता है, लेकिन यह सी में है (क्षमा करें जोएल, मैंने learn C before graduating नहीं किया था)।
किसी भी मदद की सराहना की जाएगी, धन्यवाद!
संपादित करें:
आप सभी प्रतिक्रियाओं के लिए धन्यवाद! मैंने मैथ्यू रूस्टन की प्रतिक्रिया को उत्तर के रूप में स्वीकार कर लिया क्योंकि आखिरकार मुझे उस कोड पर ले जाया गया जिसे मैं ढूंढ रहा था। यहाँ मैं क्या काम मिल गया (आप Microsoft.Office.Interop.Outlook के लिए एक संदर्भ जोड़ने की आवश्यकता होगी) का एक सरल उदाहरण है:
using System;
using System.Collections.Generic;
using Microsoft.Office.Interop.Outlook;
namespace PSTReader {
class Program {
static void Main() {
try {
IEnumerable<MailItem> mailItems = readPst(@"C:\temp\PST\Test.pst", "Test PST");
foreach (MailItem mailItem in mailItems) {
Console.WriteLine(mailItem.SenderName + " - " + mailItem.Subject);
}
} catch (System.Exception ex) {
Console.WriteLine(ex.Message);
}
Console.ReadLine();
}
private static IEnumerable<MailItem> readPst(string pstFilePath, string pstName) {
List<MailItem> mailItems = new List<MailItem>();
Application app = new Application();
NameSpace outlookNs = app.GetNamespace("MAPI");
// Add PST file (Outlook Data File) to Default Profile
outlookNs.AddStore(pstFilePath);
MAPIFolder rootFolder = outlookNs.Stores[pstName].GetRootFolder();
// Traverse through all folders in the PST file
// TODO: This is not recursive, refactor
Folders subFolders = rootFolder.Folders;
foreach (Folder folder in subFolders) {
Items items = folder.Items;
foreach (object item in items) {
if (item is MailItem) {
MailItem mailItem = item as MailItem;
mailItems.Add(mailItem);
}
}
}
// Remove PST file from Default Profile
outlookNs.RemoveStore(rootFolder);
return mailItems;
}
}
}
नोट: इस कोड को मानता है कि आउटलुक स्थापित किया गया है और पहले से ही वर्तमान उपयोगकर्ता के लिए कॉन्फ़िगर किया गया। यह डिफ़ॉल्ट प्रोफ़ाइल का उपयोग करता है (आप नियंत्रण कक्ष में मेल पर जाकर डिफ़ॉल्ट प्रोफ़ाइल संपादित कर सकते हैं)। इस कोड पर एक बड़ा सुधार डिफ़ॉल्ट के बजाय उपयोग करने के लिए अस्थायी प्रोफ़ाइल बनाना होगा, फिर इसे पूरा करने के बाद इसे नष्ट कर दें।
मुझे पता नहीं था कि AddStores और स्टोर सूची भी आउटलुक एपीआई में ही अस्तित्व में। अच्छी पोस्ट! –
क्या मुझे कुछ याद आ रहा है? मैं दृष्टिकोण के स्टोर संग्रह का उपयोग क्यों नहीं कर सकता? यह इंटेलिजेंस में नहीं है। –
क्या आपने 'माइक्रोसॉफ्ट.ऑफिस.इंटरोप.ऑटlook;' का उपयोग किया था। आपके कोड में? –