Outlook फ़ाइलें पढ़ना और रूपांतरण
OST फ़ाइलों के साथ काम करना
Aspose.Email for .NET Microsoft Outlook OST फ़ाइलें पढ़ने के लिए एक API प्रदान करता है। आप डिस्क या स्ट्रीम से एक OST फ़ाइल को लोड करके किसी इंस्टेंस में ला सकते हैं Aspose.Email.Outlook.Pst.PersonalStorage क्लास जो इसकी सामग्री जैसे फ़ोल्डर, सबफ़ोल्डर, और संदेशों तक पहुँच प्रदान करता है। Microsoft Outlook POP3 या IMAP मेल सर्वर उपयोग करते समय ईमेल संग्रहीत करने के लिए PST फ़ाइल बनाता है। इसके विपरीत, जब Microsoft Exchange मेल सर्वर होता है तो यह OST फ़ाइल बनाता है। OST फ़ाइलें PST फ़ाइलों की तुलना में बड़े फ़ाइल आकार का समर्थन भी करती हैं।
OST फ़ाइलें पढ़ें
Aspose.Email के साथ OST फ़ाइल पढ़ने की प्रक्रिया PST फ़ाइल पढ़ने के समान ही है। वही कोड PST और OST दोनों फ़ाइलें पढ़ सकता है: केवल सही फ़ाइल नाम प्रदान करें PersonalStorage.FromFile() विधि। निम्नलिखित कोड स्निपेट दिखाता है कि OST फ़ाइलों को कैसे पढ़ें।
OST को PST में परिवर्तित करें
Try it out!
ईमेल और संदेश संग्रह को ऑनलाइन मुफ्त में परिवर्तित करें Aspose.Email कन्वर्ज़न ऐप.
OST फ़ाइलों के साथ अन्य ऑपरेशनों के लिए, कृपया निम्नलिखित पृष्ठों देखें:
- PST फ़ाइलें पढ़ें और जानकारी प्राप्त करें
- Outlook PST फ़ाइल से संदेश जानकारी प्राप्त करें
- Outlook PST फ़ाइल से संदेश निकालें और MSG फ़ॉर्मेट में डिस्क या स्ट्रीम में सहेजें
- Outlook PST फ़ाइल से संपर्क जानकारी एक्सेस करें और MSG फ़ॉर्मेट में डिस्क पर सहेजें
PST को OST में परिवर्तित करें
PST से OST में रूपांतरण Aspose.Email द्वारा समर्थित नहीं है क्योंकि OST हमेशा Outlook द्वारा खाते को जोड़ते समय और मेल सर्वर के साथ सिंक्रनाइज़ करते समय बनाया जाता है। PST और OST फ़ाइलों में अंतर यह है कि PST केवल स्थानीय रूप से उपलब्ध है। OST सामग्री ईमेल सर्वर पर भी उपलब्ध होती है। इसलिए स्थानीय उपयोग के लिए PST को OST में बदलने की आवश्यकता नहीं है। लेकिन आप Outlook में Import/Export विज़ार्ड का उपयोग करके PST को मौजूदा खाते में आयात कर सकते हैं।
OLM एक विशिष्ट फ़ाइल फ़ॉर्मेट है जिसका उपयोग Microsoft Outlook द्वारा ईमेल, एटैचमेंट, नोट, कैलेंडर डेटा, कॉन्टैक्ट, टास्क, हिस्ट्री आदि जैसी स्थानीय डेटा को स्टोर करने के लिए किया जाता है। OLM फ़ाइलें केवल Outlook for Mac के साथ संगत हैं और Windows के लिए Outlook द्वारा उपयोग किए जाने वाले PST फ़ॉर्मेट के बजाय इन्हें नहीं खोला या एक्सेस किया जा सकता।
OLM फ़ाइलों के साथ काम करना
OLM फ़ाइलें खोलें
OLM फॉर्मेट फ़ाइलें दो तरीकों से खोली जा सकती हैं:
- कंस्ट्रक्टर का उपयोग करके
- स्टैटिक FromFile मेथड का उपयोग करके
इन मेथड्स के व्यवहार में अंतर हैं। नीचे देखें अनुभाग।
कंस्ट्रक्टर का उपयोग
फ़ाइल खोलने के लिए, इस क्लास का कंस्ट्रक्टर कॉल करें OlmStorage क्लास और फ़ाइल का पूरा नाम या स्ट्रीम को आर्ग्युमेंट के रूप में पास करें:
var fileName = "MyStorage.olm";
var olm = new OlmStorage(fileName);
स्टैटिक मेथड FromFile का उपयोग
फ़ाइल खोलने के लिए, स्टैटिक मेथड उपयोग करें FromFile और पूरी फ़ाइल का नाम या स्ट्रीम को आर्ग्युमेंट के रूप में पास करें:
var fileName = "MyStorage.olm";
var olm = OlmStorage.FromFile(fileName);
फ़ोल्डर प्राप्त करें
OLM फ़ाइल की डायरेक्टरी संरचना तक पहुंचने के लिए, इसके एक इंस्टेंस बनाएं OlmStorage क्लास को उसके कंस्ट्रक्टर से बनाकर फ़ाइल का पाथ पास करें। फ़ाइल खुलने के बाद, उसकी डायरेक्टरी संरचना को एक्सेस करें FolderHierarchy प्रॉपर्टी। यह प्रॉपर्टी एक सूची लौटाती है OlmFolder ऑब्जेक्ट्स, प्रत्येक OLM फ़ाइल में एक डायरेक्टरी का प्रतिनिधित्व करता है। डायरेक्टरी संरचना को आगे अन्वेषण करने के लिए, एक्सेस करें SubFolders प्रत्येक ऑब्जेक्ट की प्रॉपर्टी, जो उसकी सबडायरेक्टरी की सूची लौटाती है। इन प्रॉपर्टीज़ का उपयोग करके आप OLM फ़ाइल की पूरी डायरेक्टरी पदानुक्रम में नेविगेट कर सकते हैं और उसमें मौजूद सभी डायरेक्टरी और सबडायरेक्टरी तक पहुंच सकते हैं।
निम्न उदाहरण सभी फ़ोल्डरों की सूची पदानुक्रमित क्रम में प्रदर्शित करता है:
using (var olm = new OlmStorage(fileName))
{
PrintAllFolders(olm.FolderHierarchy, string.Empty);
}
private void PrintAllFolders(List<OlmFolder> folderHierarchy, string indent)
{
foreach (var folder in folderHierarchy)
{
Console.WriteLine($"{indent}{folder.Name}");
PrintAllFolders(folder.SubFolders, indent+"-");
}
}
जब उपयोग किया जाए FromFile मेथड OLM फ़ाइल खोलने के लिए, यह FolderHierarchy प्रॉपर्टी डिफ़ॉल्ट रूप से इनिशियलाइज़ नहीं होगी और null लौटाएगी। इस स्थिति में, इसे इनिशियलाइज़ करने के लिए GetFolders मेथड को स्पष्ट रूप से कॉल करें। FolderHierarchy प्रॉपर्टी और OLM फ़ाइल में डायरेक्टरी की सूची प्राप्त करें:
using (var olm = OlmStorage.FromFile(fileName))
{
var folders = olm.GetFolders();
}
इसके अलावा, किसी भी फ़ोल्डर को नाम से प्राप्त किया जा सकता है:
- कॉल करें GetFolder विधि।
- फ़ोल्डर नाम को पहले आर्ग्यूमेंट के रूप में पास करें और दूसरा पैरामीटर के रूप में वह मान पास करें, जो दर्शाता है कि फ़ोल्डर खोजते समय केस-सेंसिटिविटी को अनदेखा किया जाए या नहीं।
using (var olm = OlmStorage.FromFile(fileName))
{
// get inbox folder by name
OlmFolder folder = olm.GetFolder("Inbox", true);
}
ईमेल सूचीबद्ध करें
OlmFolder class, जो एक फ़ोल्डर का प्रतिनिधित्व करता है, ईमेल सूची प्राप्त करने के लिए निम्नलिखित मेथड्स रखता है:
- EnumerateMessages फ़ोल्डर में ईमेल के इटरेशन को लागू करता है। इस मामले में, प्रत्येक इटरेशन लौटाता है OlmMessageInfo ऑब्जेक्ट, जो ईमेल के बारे में संक्षिप्त जानकारी प्रदान करता है।
- EnumerateMapiMessages, फ़ोल्डर में ईमेल के इटरेशन को भी लागू करता है, लेकिन इस मामले में, प्रत्येक इटरेशन लौटाता है MapiMessage ऑब्जेक्ट, जो ईमेल को स्वयं सभी प्रॉपर्टीज़ के साथ दर्शाता है।
EnumerateMessages मेथड का उपयोग
using (var olm = OlmStorage.FromFile(fileName))
{
var folder = olm.GetFolder("Inbox", true);
foreach (var messageInfo in folder.EnumerateMessages())
{
Console.WriteLine(messageInfo.Subject);
}
}
EnumerateMapiMessages मेथड का उपयोग
using (var olm = OlmStorage.FromFile(fileName))
{
var folder = olm.GetFolder("Inbox", true);
foreach (var msg in folder.EnumerateMapiMessages())
{
// save message in MSG format
msg.Save($"{msg.Subject}.msg");
}
}
अन्य उपयोगी प्रॉपर्टी
OlmFolder क्लास की अन्य उपयोगी प्रॉपर्टीज़ हैं: HasMessages और MessageCount प्रॉपर्टीज़, जो फ़ोल्डर में संदेशों की उपस्थिति और उनकी संख्या लौटाती हैं।
using (var olm = OlmStorage.FromFile(fileName))
{
var folder = olm.GetFolder("Inbox", true);
if (folder.HasMessages)
{
Console.WriteLine($"Message count: {folder.MessageCount}");
}
}
संदेश की संशोधित तिथि प्राप्त करना या सेट करना
संशोधित तिथि दर्शाती है वह तारीख और समय जब OLM संदेश को आखिरी बार संशोधित किया गया था। आप इसका उपयोग कर सकते हैं OlmMessageInfo.ModifiedDate OLM संदेश की संशोधित तिथि मान को प्राप्त या अपडेट करने की प्रॉपर्टी।
यहाँ एक उदाहरण है जो प्रॉपर्टी के उपयोग को दर्शाता है:
foreach (OlmMessageInfo messageInfo in inboxFolder.EnumerateMessages())
{
DateTime modifiedDate = messageInfo.ModifiedDate;
}
ईमेल और आइटम निकालें
OlmStorage क्लास में है ExtractMapiMessage मेथड जो ईमेल निकालने की अनुमति देता है। यह मेथड प्राप्त करता है एक OlmMessageInfo ऑब्जेक्ट।
using (var olm = OlmStorage.FromFile(fileName))
{
var folder = olm.GetFolder("Inbox", true);
foreach (var messageInfo in folder.EnumerateMessages())
{
if (messageInfo.Date == DateTime.Today)
{
// Extracts today's messages form Inbox
var msg = olm.ExtractMapiMessage(messageInfo);
}
}
}
Traversal API का उपयोग
आप Outlook OLM फ़ाइल से जितना संभव हो सभी आइटम निकाल सकते हैं, बिना अपवाद फेंके, भले ही मूल फ़ाइल का कुछ डेटा खराब हो। इसे करने के लिए, उपयोग करें OlmStorage(TraversalExceptionsCallback callback) कंस्ट्रक्टर और Load(string fileName) FromFile मेथड के बजाय मेथड। कन्स्ट्रक्टर आपको एक कॉलबैक मेथड परिभाषित करने की अनुमति देता है।
using (var olm = new OlmStorage((exception, id) => { /* Exception handling code. */ }))
कॉलबैक मेथड लोडिंग और ट्रैवर्सल अपवादों को उपलब्ध कराता है।
यह Load मेथड ’true’ लौटाता है यदि फ़ाइल सफलतापूर्वक लोड हो गई है और आगे ट्रैवर्स करना संभव है। यदि फ़ाइल क्षतिग्रस्त है और ट्रैवर्स सम्भव नहीं है, तो ‘false’ लौटाया जाता है।
if (olm.Load(fileName))
निम्नलिखित कोड स्निपेट और चरण दर्शाते हैं कि इस API का उपयोग कैसे किया जाए:
- एक नया उदाहरण बनाएं OlmStorage class, प्रक्रिया के दौरान उत्पन्न होने वाली किसी भी अपवाद को संभालने के लिए एक एक्सेप्शन हैंडलिंग कॉलबैक पास करते हुए।
- ओएलएम फ़ाइल को कॉल करके लोड करें Load OlmStorage इंस्टेंस की मेथड।
- यदि OLM फ़ाइल सफलतापूर्वक लोड है, तो फ़ोल्डर पदानुक्रम प्राप्त करने के लिए इसे कॉल करके। GetFolders OlmStorage इंस्टेंस पर मेथड। यह OlmFolder ऑब्जेक्ट्स की सूची लौटाता है।
- ExtractItems मेथड को कॉल करें, OlmStorage इंस्टेंस और OlmFolder ऑब्जेक्ट्स की सूची पास करते हुए।
- ExtractItems मेथड में, फ़ोल्डर्स सूची में प्रत्येक फ़ोल्डर पर इटररेट करें।
- यदि फ़ोल्डर में संदेश (ईमेल) हैं, तो Console.WriteLine(folder) का उपयोग करके फ़ोल्डर का नाम कन्सोल पर प्रिंट करें।
- OlmStorage इंस्टेंस पर EnumerateMessages मेथड को कॉल करके, वर्तमान फ़ोल्डर को आर्गुमेंट के रूप में पास करते हुए, वर्तमान फ़ोल्डर में संदेशों पर इटररेट करें।
- Console.WriteLine(msg.Subject) का उपयोग करके प्रत्येक संदेश का विषय कन्सोल पर प्रिंट करें।
- यदि फ़ोल्डर में सबफ़ोल्डर हैं, तो ExtractItems मेथड को पुनरावर्तित रूप से फिर से कॉल करें, OlmStorage इंस्टेंस और वर्तमान फ़ोल्डर के सबफ़ोल्डर पास करते हुए।
using (var olm = new OlmStorage((exception, id) => { /* Exception handling code. */ }))
{
if (olm.Load(fileName))
{
var folderHierarchy = olm.GetFolders();
ExtractItems(olm, folderHierarchy);
}
}
private static void ExtractItems(OlmStorage olm, List<OlmFolder> folders)
{
foreach (var folder in folders)
{
if (folder.HasMessages)
{
Console.WriteLine(folder);
foreach (var msg in olm.EnumerateMessages(folder))
{
Console.WriteLine(msg.Subject);
}
}
if (folder.SubFolders.Count > 0)
{
ExtractItems(olm, folder.SubFolders);
}
}
}
पहचानकर्ताओं द्वारा संदेश निकालें
कभी-कभी पहचानकर्ताओं द्वारा चयनित संदेशों को निकालना आवश्यक होता है। उदाहरण के लिए, आपका एप्लिकेशन पहचानकर्ताओं को डेटाबेस में संग्रहीत करता है और मांग पर संदेश निकालता है। यह विशिष्ट संदेश को निकालने के लिए हर बार संपूर्ण स्टोरेज के माध्यम से चलने से बचने का कुशल तरीका है। यह सुविधा OLM स्टोरेज के लिए उपलब्ध है। EntryId की प्रॉपर्टी OlmMessageInfo क्लास संदेश एंट्री पहचानकर्ता प्राप्त करता है। ओवरलोडेड ExtractMapiMessage(string id) विधि OlmStorage क्लास OLM से संदेश प्राप्त करता है।
नीचे दिया गया कोड दिखाता है कि OLM से पहचानकर्ताओं द्वारा संदेशों को कैसे निकाला जाए।
कोड निम्नलिखित चरणों को निष्पादित करता है:
- एक foreach लूप शुरू करता है जिससे सूची में इटररेट किया जा सके OlmMessageInfo ऑब्जेक्ट्स। लूप उपयोग करता है EnumerateMessages olmFolder ऑब्जेक्ट की मेथड जो वर्तमान फ़ोल्डर में सभी संदेशों की सूची प्राप्त करती है।
- लूप संग्रह से संबंधित MapiMessage ऑब्जेक्ट को कॉल करके निकालता है ExtractMapiMessage(string id) की विधि OlmStorage क्लास, जिसमें पास किया जाता है EntryId वर्तमान संदेश का पैरामीटर के रूप में।
प्राप्त MapiMessage ऑब्जेक्ट का उपयोग संदेश की सामग्री तक पहुँचने और उसे संशोधित करने के लिए किया जा सकता है। लूप तब तक चलता रहता है जब तक फ़ोल्डर में सभी संदेश संसाधित नहीं हो जाते।
foreach (OlmMessageInfo msgInfo in olmFolder.EnumerateMessages())
{
MapiMessage msg = storage.ExtractMapiMessage(msgInfo.EntryId);
}
फ़ोल्डर पथ प्राप्ति
आप OML फ़ाइल में फ़ोल्डरों का फ़ोल्डर पाथ भी प्राप्त कर सकते हैं। Aspose.Email प्रदान करता है OlmFolder.Path प्रॉपर्टी जो फ़ोल्डर पाथ लौटाती है। निम्नलिखित कोड स्निपेट इसका उपयोग दर्शाता है OlmFolder.Path OLM फ़ाइल में फ़ोल्डर पाथ्स प्राप्त करने के लिए प्रॉपर्टी।
var storage = new OlmStorage("SampleOLM.olm");
PrintPath(storage, storage.FolderHierarchy);
public static void PrintPath(OlmStorage storage, List<OlmFolder> folders)
{
foreach (OlmFolder folder in folders)
{
// print the current folder path
Console.WriteLine(folder.Path);
if (folder.SubFolders.Count > 0)
{
PrintPath(storage, folder.SubFolders);
}
}
}
फ़ोल्डर में आइटम गिनें
आप फ़ोल्डर में आइटम्स की संख्या भी गिन सकते हैं। Aspose.Email प्रदान करता है OlmFolder.MessageCount प्रॉपर्टी जो फ़ोल्डर में आइटम्स की संख्या लौटाती है। निम्न कोड स्निपेट इसका उपयोग दर्शाता है OlmFolder.MessageCount OLM फ़ाइल के फ़ोल्डर में आइटम्स की संख्या प्राप्त करने के लिए प्रॉपर्टी।
var storage = new OlmStorage("SampleOLM.olm");
PrintMessageCount(storage.FolderHierarchy);
public static void PrintMessageCount(List<OlmFolder> folders)
{
foreach (OlmFolder folder in folders)
{
Console.WriteLine("Message Count [" + folder.Name + "]: " + folder.MessageCount);
}
}
OlmStorage की कुल आइटम्स की संख्या प्राप्त करें
OlmStorage क्लास में भी है GetTotalItemsCount() मेथड जो OLM स्टोरेज में मौजूद संदेश आइटमों की कुल संख्या लौटाता है।
using (var olm = new OlmStorage("storage.olm"))
{
var count = olm.GetTotalItemsCount();
}
Outlook श्रेणी रंग प्राप्ति
OLM फ़ाइलों में संग्रहीत श्रेणी रंगों या Outlook आइटम श्रेणियों के साथ काम करने के लिए, Aspose.Email निम्न समाधान प्रदान करता है:
- OlmItemCategory क्लास - Outlook आइटम श्रेणियों को दर्शाता है जो उनके नाम और संबंधित रंगों द्वारा उपलब्ध हैं, जो हेक्साडेसिमल फॉर्मेट में दर्शाए गए हैं।
- GetCategories() विधि OlmStorage क्लास - श्रेणी सूची प्राप्त करता है।
निम्नलिखित कोड उदाहरण दिखाता है कि OML स्टोरेज से सभी प्रयुक्त श्रेणियों को कैसे प्राप्त किया जाए:
using (var olm = OlmStorage.FromFile("storage.olm"))
{
var categories = olm.GetCategories();
foreach (var category in categories)
{
Console.WriteLine($"Category name: {category.Name}");
//Color is represented as a hexadecimal value: #rrggbb
Console.WriteLine($"Category color: {category.Color}");
}
}
नीचे दिया गया कोड उदाहरण दिखाता है कि संदेश श्रेणी का रंग कैसे प्राप्त किया जाए:
foreach (var msg in olm.EnumerateMessages(folder))
{
if (msg.Categories != null)
{
foreach (var msgCategory in msg.Categories)
{
Console.WriteLine($"Category name: {msgCategory}");
var categoryColor = cat.First(c => c.Name.Equals(msgCategory, StringComparison.OrdinalIgnoreCase)).Color;
Console.WriteLine($"Category color: {categoryColor}");
}
}
}
OLM को PST में बदलें
OLM Microsoft Outlook for Mac सिस्टम द्वारा उपयोग किया जाने वाला डेटाबेस फ़ाइल फॉर्मेट है। OLM फ़ाइलें ईमेल संदेश, कैलेंडर डेटा, संपर्क डेटा, और एप्लिकेशन सेटिंग्स संग्रहीत करती हैं। OLM फ़ाइल Outlook for Windows द्वारा समर्थित नहीं है। इसलिए, Outlook for Mac (OLM) फ़ाइल को Outlook for Windows में खोलना संभव नहीं है। यदि आप अपने मेलबॉक्स को Outlook for Mac से Outlook for Windows में माइग्रेट करना चाहते हैं, तो Outlook for Mac OLM फ़ाइल को Outlook PST फ़ाइल फॉर्मेट में परिवर्तित करना आवश्यक है।
कोड चरण
OLM फ़ाइल को PST में रूपांतरित करने के लिए नीचे दिए गए कदमों का पालन करें:
- का एक इंस्टेंस बनाएं OlmStorage स्रोत OLM खोलने के लिए क्लास।
- एक स्रोत OLM फ़ाइल खोलें।
- उपयोग करके एक नई PST फ़ाइल बनाएं Create विधि।
- संदेश क्लास को फ़ोल्डर क्लास से मैप करने के लिए GetContainerClass मेथड बनाएं।
- एक AddToPst मेथड बनाएं जो EnumerateMapiMessages मेथड का उपयोग करके OLM से प्रत्येक फ़ोल्डर और उसके संदेशों को पुनरावर्ती रूप से पढ़ता है और AddSubFolder तथा AddMessage मेथड का उपयोग करके उन्हें उसी क्रम में PST में जोड़ता है।
कोड उदाहरण
निम्नलिखित कोड उदाहरण दिखाता है कि OLM को PST में कैसे रूपांतरित किया जाए।
Main मेथड:
// 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);
}
}