Python में PST फ़ाइलें बनाएं और व्यवस्थित करें
नई PST फ़ाइल बनाएं और सबफ़ोल्डर जोड़ें
Aspose.Email यह कार्यक्षमता प्रदान करता है कि आप शुरू से Personal Storage Table (PST) फ़ाइलें बनाएँ और उनमें सबफ़ोल्डर जोड़ें। साथ ही PersonalStorage क्लास, आप PST फ़ाइलों से संबंधित ऑपरेशन्स को प्रबंधित कर सकते हैं, जो ईमेल संदेश, कैलेंडर इवेंट्स, संपर्क और अन्य डेटा संग्रहीत करती हैं।
निम्नलिखित कोड नमूना दिखाता है कि कैसे एक नई स्टोरेज फ़ाइल बनाई जाए और उसमें "Inbox" फ़ोल्डर जोड़ा जाए:
- उपयोग करें PersonalStorage.create निर्दिष्ट डायरेक्टरी के साथ एक नई PST फ़ाइल जनरेट करने की मेथड। फ़ाइल को उपयोग करके बनाया जाता है
UNICODEआधुनिक अनुप्रयोगों के साथ संगतता के लिए फ़ॉर्मेट। - PST फ़ाइल की रूट फ़ोल्डर तक पहुंचें और ईमेल संदेशों को व्यवस्थित करने के लिए "Inbox" नाम का एक नया सबफ़ोल्डर जोड़ें।
कंटेनर क्लास मिलान जांच
Aspose.Email for Python PST फ़ाइलों में फ़ोल्डर निर्माण के दौरान वैलिडेशन प्रक्रिया को बेहतर बनाने का समाधान प्रदान करता है। enforce_container_class_matching प्रॉपर्टी के साथ FolderCreationOptions क्लास, आप PST स्टोरेज में नया फ़ोल्डर जोड़ते समय कंटेनर क्लास की सख्त मेल सुनिश्चित कर सकते हैं। यह सुविधा PST फ़ाइल के संगठनात्मक पदक्रम को बनाए रखने में मदद करती है, कंटेनर क्लास के मेल न खाने को रोककर। ‘EnforceContainerClassMatching’ को ’true’ सेट करने पर यदि पैरेंट और चाइल्ड फ़ोल्डर की कंटेनर क्लास मेल नहीं खाती है तो अपवाद फेंका जाएगा, जिससे गलत फ़ोल्डर संरचना से सुरक्षा मिलती है। इस प्रॉपर्टी का डिफ़ॉल्ट व्यवहार ‘false’ है, जिससे फ़ोल्डर निर्माण में लचीलापन मिलता है, जबकि आवश्यकता पड़ने पर आप सख्त कंटेनर क्लास मिलान लागू कर सकते हैं।
निम्नलिखित कोड नमूना enforce_container_class_matching प्रॉपर्टी के उपयोग को दर्शाता है, जिससे यह नियंत्रित किया जा सके कि जब असंगत कंटेनर क्लास वाले फ़ोल्डर जोड़े जाएं तो अपवाद फेंका जाना चाहिए या नहीं:
with PersonalStorage.create("storage.pst", FileFormatVersion.Unicode) as pst:
contacts = pst.createpredefinedfolder("Contacts", StandardIpmFolder.Contacts)
# An exception will not arise. EnforceContainerClassMatching is False by default.
contacts.addsubfolder("Subfolder1", "IPF.Note")
# An exception will occur as the container class of the subfolder being added (IPF.Note)
# does not match the container class of the parent folder (IPF.Contact).
contacts.addsubfolder("Subfolder3", FolderCreationOptions(enforcecontainerclassmatching=True, containerclass="IPF.Note"))
फ़ोल्डर कंटेनर क्लास बदलना
कभी-कभी फ़ोल्डर क्लास को बदलना आवश्यक हो जाता है। एक सामान्य उदाहरण यह है कि विभिन्न प्रकार के संदेश (अपॉइंटमेंट, संदेश आदि) एक ही फ़ोल्डर में जोड़े जाते हैं। ऐसे मामलों में, फ़ोल्डर क्लास को सभी तत्वों के लिए बदलना पड़ता है ताकि फ़ोल्डर सही ढंग से प्रदर्शित हो। नीचे दिया गया कोड स्निपेट दिखाता है कि इस उद्देश्य के लिए PST में फ़ोल्डर की कंटेनर क्लास को कैसे बदलें:
बेहतर प्रदर्शन के साथ बल्क संदेश जोड़ें
व्यक्तिगत रूप से जोड़ने के बजाय PST फ़ाइल में बड़े पैमाने पर संदेश जोड़ने से कई लाभ मिल सकते हैं, विशेष रूप से दक्षता और प्रदर्शन के मामले में: कम I/O ऑपरेशन, कार्य को पूरा करने में कम समय, सिस्टम संसाधनों का अधिक प्रभावी उपयोग, आदि। add_messages मेथड का उपयोग FolderInfo क्लास का उपयोग सोर्स फ़ोल्डर से प्राप्त MAPI संदेशों के कलेक्शन को डेस्टिनेशन फ़ोल्डर में ट्रांसफर करने के लिए किया जाता है।
दूसरे PST से संदेश जोड़ें
PST फ़ाइल के सोर्स फ़ोल्डर से सभी MAPI संदेशों को सूचीबद्ध और प्राप्त करने के लिए, enumerate_mapi_messages() मेथड का उपयोग करें FolderInfo क्लास। फिर, इन संदेशों को दूसरे PST फ़ाइल के डेस्टिनेशन फ़ोल्डर में जोड़ें।
import aspose.email as ae
src_pst = ae.storage.pst.PersonalStorage.from_file("source.pst", False)
dest_pst = ae.storage.pst.PersonalStorage.from_file("destination.pst")
# Get the folder by name
src_folder = src_pst.root_folder.get_sub_folder("SomeFolder")
dest_folder = dest_pst.root_folder.get_sub_folder("SomeFolder")
dest_folder.add_messages(src_folder.enumerate_mapi_messages())
डायरेक्टरी से संदेश जोड़ें
डायरेक्टरी से संदेश जोड़ने के लिए, फ़ाइल खोलने और PST फ़ाइल के भीतर एक विशिष्ट फ़ोल्डर का रेफरेंस प्राप्त करने के बाद, "path" वेरिएबल द्वारा निर्दिष्ट डायरेक्टरी से फ़ाइल नामों की सूची प्राप्त करें और प्रत्येक फ़ाइल को MapiMessage के रूप में लोड करने के लिए एक खाली MSG सूची बनाएं। प्रत्येक लोड किए गए संदेश को msg_list में जोड़ें। नीचे दिया गया कोड नमूना डायरेक्टरी से संदेश जोड़ने की प्रक्रिया को दर्शाता है:
import aspose.email as ae
import os
pst = ae.storage.pst.PersonalStorage.from_file("my.pst", False)
# Get the folder by name
folder = pst.root_folder.get_sub_folder("SomeFolder")
dirs = os.listdir("path")
msg_list = []
for file in dirs:
msg = ae.mapi.MapiMessage.load(file)
msg_list.append(msg)
folder.add_messages(iter(msg_list))