Python में IMAP सर्वर पर फ़ोल्डरों का प्रबंधन करें
IMAP फ़ोल्डर सूचीबद्ध करें
Aspose.Email के साथ IMAP सर्वर से फ़ोल्डर जानकारी प्राप्त करना सरल है। फ़ोल्डर विवरण प्राप्त करने और उनके साथ काम करने के लिए नीचे दिए गए चरणों का पालन करें:
- Aspose.Email से list_folders() मेथड का उपयोग करें ImapClient क्लास। यह मेथड एक इंस्टेंस लौटाता है। ImapFolderInfoCollection, जिसमें सभी फ़ोल्डरों का विवरण शामिल है।
- के माध्यम से लूप करें ImapFolderInfoCollection व्यक्तिगत फ़ोल्डरों की जानकारी तक पहुँचने के लिए ऑब्जेक्ट।
- सबफ़ोल्डर प्राप्त करें (वैकल्पिक)। list_folders() मेथड ओवरलोडेड है। आप निर्दिष्ट फ़ोल्डर के लिए सबफ़ोल्डरों का संग्रह प्राप्त करने हेतु फ़ोल्डर नाम पैरामीटर के रूप में पास कर सकते हैं।
निम्नलिखित कोड स्निपेट दर्शाता है कि Aspose.Email मेथड का उपयोग करके IMAP सर्वर से फ़ोल्डर जानकारी कैसे प्राप्त की जाए:
फ़ोल्डरों का रीनेम और डिलीट
Aspose.Email का यह मेथड प्रदान करता है ImapClient IMAP के माध्यम से ईमेल सर्वर पर फ़ोल्डरों का प्रबंधन करने के लिए क्लास:
- delete_folder मेथड - फ़ोल्डर और उसमें मौजूद सभी संदेशों को स्थायी रूप से हटाता है।
- rename_folder मेथड - फ़ोल्डर का नाम बदलता है बिना उसकी सामग्री को बदले।
नीचे दिया गया कोड स्निपेट दिखाता है कि प्रोग्रामेटिकली IMAP सर्वर पर फ़ोल्डर कैसे डिलीट या रीनेम करें:
# Delete a folder and Rename a folder
client.delete_folder("foldername")
client.rename_folder("foldername", "newfoldername")
विशिष्ट फ़ोल्डरों में संदेश बनाएं और जोड़ें
Aspose.Email API के साथ, आप इसका उपयोग कर सकते हैं MailMessage और ImapClient फ़ोल्डर में नया संदेश जोड़ने के लिए क्लासेस। सबसे पहले, एक बनाएँ MailMessage ऑब्जेक्ट, जिसमें विषय, प्रेषक, और प्राप्तकर्ता निर्दिष्ट हों। फिर, किसी फ़ोल्डर को सब्सक्राइब करें और उसमें संदेश जोड़ें। नीचे दिया गया कोड स्निपेट दिखाता है कि फ़ोल्डर में नया संदेश कैसे जोड़ा जाए:
- का उपयोग करके IMAP क्लाइंट प्रारंभ करें ImapClient क्लास जिससे आप अपने ईमेल सर्वर से कनेक्ट होते हैं। सर्वर पता, पोर्ट, उपयोगकर्ता नाम, और पासवर्ड प्रदान करें।
- select_folder मेथड का उपयोग करके लक्ष्य फ़ोल्डर (जैसे "Inbox") चुनें जहाँ आप नया संदेश जोड़ना चाहते हैं।
- का उपयोग करके नया ईमेल बनाएं MailMessage क्लास। प्रेषक, प्राप्तकर्ता, विषय, और संदेश सामग्री निर्दिष्ट करें।
- subscribe_folder मेथड का उपयोग करके फ़ोल्डर नाम के साथ फ़ोल्डर को सब्सक्राइब करें।
- append_message मेथड का उपयोग करके नए बनाए गए संदेश को चयनित फ़ोल्डर में जोड़ें, फ़ोल्डर का नाम और संदेश ऑब्जेक्ट निर्दिष्ट करते हुए।
फ़ोल्डरों के बीच संदेशों को स्थानांतरित करें
.NET के लिए Aspose.Email एक मेलबॉक्स फ़ोल्डर से दूसरे में संदेश ले जाने की अनुमति देता है, उपयोग करके ImapClient API। move_message मेथड संदेश के अद्वितीय ID और गंतव्य फ़ोल्डर नाम का उपयोग करके संदेश को गंतव्य फ़ोल्डर में ले जाता है। नीचे दिया गया कोड स्निपेट दर्शाता है कि फ़ोल्डरों के बीच संदेश कैसे ले जाएँ:
फ़ोल्डरों के बीच संदेश कॉपी करें
Aspose.Email API आपको एक मेलबॉक्स फ़ोल्डर से दूसरे में संदेश कॉपी करने में सहज बनाता है। आप copy_message और copy_messages मेथड का उपयोग करके एकल या कई संदेश कॉपी कर सकते हैं। copy_messages मेथड आपको स्रोत फ़ोल्डर से गंतव्य फ़ोल्डर में कई संदेश स्थानांतरित करने की अनुमति देता है। नीचे एक कोड स्निपेट है जो फ़ोल्डरों के बीच संदेश कॉपी करने का प्रदर्शन करता है:
स्पेशल-युज़ मेलबॉक्स फ़ोल्डरों के साथ काम करें
स्पेशल-युज़ मेलबॉक्स ईमेल सिस्टम में पूर्वनिर्धारित फ़ोल्डर होते हैं जो विशिष्ट प्रकार के संदेशों जैसे Sent, Drafts, Junk, Trash, और Archive को संभालने के लिए डिज़ाइन किए गए हैं। Aspose.Email लाइब्रेरी इन मेलबॉक्स तक पहुँच को सरल बनाती है, उनके रोल और उद्देश्य के साथ एट्रिब्यूट्स को जोड़कर। इससे क्लाइंट्स बिना किसी उपयोगकर्ता हस्तक्षेप के इन फ़ोल्डरों को स्वतः खोज और प्रदर्शित कर सकते हैं।
निम्नलिखित कोड स्निपेट दिखाता है कि प्रमुख विशेष-उपयोग मेलबॉक्स (Inbox, Drafts, Junk, Sent, और Trash) की जानकारी कैसे प्राप्त करें, इनकी प्रॉपर्टीज़ का उपयोग करके। ImapMailBoxInfo क्लास और विवरण प्रिंट करें:
import aspose.email as ae
client = ae.clients.imap.ImapClient("imap.domain.com", 993, "user@domain.com", "pwd", ae.clients.SecurityOptions.SSL_IMPLICIT)
mailboxInfo = client.mailbox_info
print(mailboxInfo.inbox)
print(mailboxInfo.draft_messages)
print(mailboxInfo.junk_messages)
print(mailboxInfo.sent_messages)
print(mailboxInfo.trash)
फ़ोल्डरों तक पहुँचें और संदेशों को पुनरावर्ती रूप से पढ़ें
ImapClient IMAP सर्वर से फ़ोल्डर और सबफ़ोल्डर सूचीबद्ध करने के लिए पुनरावृत्त (recursive) मेथड का उपयोग करता है। यह मेथड स्थानीय डिस्क पर MSG फ़ॉर्मेट में संदेश पढ़ने और सहेजने के लिए भी उपयोग किया जाता है। फ़ोल्डर और संदेश दोनों उसी पदानुक्रमित संरचना में बनाए और सहेजे जाते हैं जैसा कि वे IMAP सर्वर पर दिखते हैं। नीचे एक कोड स्निपेट है जो पुनरावृत्त रूप से फ़ोल्डर और संदेश प्राप्त करने को दर्शाता है:
import aspose.email as ae
import os
# Recursive method to get messages from folders and sub-folders
def list_messages_in_folder(folder_info, root_folder, client):
# Create the folder on disk (same name as on the IMAP server)
current_folder = os.path.join(root_folder, folder_info.name)
os.makedirs(current_folder, exist_ok=True)
# Read the messages from the current folder, if it is selectable
if folder_info.selectable:
# Send a status command to get folder info
folder_info_status = client.get_folder_info(folder_info.name)
print(
f"{folder_info_status.name} folder selected. New messages: {folder_info_status.new_message_count}, "
f"Total messages: {folder_info_status.total_message_count}"
)
# Select the current folder and list messages
client.select_folder(folder_info.name)
msg_info_coll = client.list_messages()
print("Listing messages....")
for msg_info in msg_info_coll:
# Get subject and other properties of the message
print("Subject:", msg_info.subject)
print(
f"Read: {msg_info.is_read}, Recent: {msg_info.recent}, Answered: {msg_info.answered}"
)
# Get rid of characters like ? and :, which should not be included in a file name
# Save the message in MSG format
file_name = (
msg_info.subject.replace(":", " ").replace("?", " ")
+ "-"
+ str(msg_info.sequence_number)
+ ".msg"
)
msg = client.fetch_message(msg_info.sequence_number)
msg.save(
os.path.join(current_folder, file_name),
ae.SaveOptions.default_msg_unicode,
)
print("============================\n")
else:
print(f"{folder_info.name} is not selectable.")
try:
# If this folder has sub-folders, call this method recursively to get messages
folder_info_collection = client.list_folders(folder_info.name)
for subfolder_info in folder_info_collection:
list_messages_in_folder(subfolder_info, root_folder, client)
except Exception:
pass
client = ae.clients.imap.ImapClient("imap.domain.com", 993, "user@domain.com", "pwd", ae.clients.SecurityOptions.SSL_IMPLICIT)
try:
# The root folder (which will be created on disk) consists of host and username
root_folder = f"{client.host}-{client.username}"
# Create the root folder and list all the folders from the IMAP server
os.makedirs(root_folder, exist_ok=True)
folder_info_collection = client.list_folders()
for folder_info in folder_info_collection:
# Call the recursive method to read messages and get sub-folders
list_messages_in_folder(folder_info, root_folder, client)
except Exception as ex:
print("\n", ex)
print("\nDownloaded messages recursively from IMAP server.")
बैच फ़ोल्डर संचालन के लिए MultiConnection का उपयोग करें
Aspose.Email क्लाइंट को कॉन्फ़िगर करने में सक्षम बनाता है ताकि वह IMAP सर्वर के साथ कई समवर्ती कनेक्शन स्थापित कर सके। यह अनिवार्य रूप से प्रदर्शन नहीं बढ़ाता, लेकिन समवर्ती संचालन के लिए विश्वसनीय समाधान है। यह तब विशेष रूप से उपयोगी है जब क्लाइंट को एक साथ कई कार्य करने हों, जैसे विभिन्न ईमेल फ़ोल्डर फेच करना, बड़े डेटा को सिंक्रनाइज़ करना, या कई संदेशों को एक साथ प्रोसेस करना।
नीचे दिया गया कोड स्निपेट दिखाता है कि ‘append_messages’ मेथड का उपयोग करके ईमेल संदेशों के संग्रह को अपलोड करते हुए IMAP सर्वर से कई कनेक्शन कैसे स्थापित किए जाएँ: ImapClient क्लास:
import aspose.email as ae
client = ae.clients.imap.ImapClient("imap.domain.com", 993, "user@domain.com", "pwd", ae.clients.SecurityOptions.SSL_IMPLICIT)
client.connections_quantity = 5
client.use_multi_connection = ae.clients.MultiConnectionMode.ENABLE
client.append_messages(messages)