IMAP सर्वर से ईमेल प्राप्त करना और सूचीबद्ध करना

मेलबॉक्स से संदेश सूचीबद्ध करें

’list_messages’ मेथड का ImapClient class वर्तमान में चयनित फ़ोल्डर (इस मामले में "Inbox") से सभी संदेशों की सूची प्राप्त करता है। इस सूची में संदेश मेटाडेटा ऑब्जेक्ट होते हैं, जिनमें आमतौर पर संदेश ID, क्रमांक (sequence numbers), UID, और संभवतः सारांश डेटा जैसे विषय पंक्तियाँ या प्रेषक जानकारी शामिल होती है।

निम्न कोड स्निपेट दिखाता है कि इनबॉक्स से संदेश मेटाडेटा कैसे प्राप्त किया जाए, और उसमें मौजूद कुल संदेशों की संख्या प्रिंट कैसे करें:

import aspose.email as ae

client = ae.clients.imap.ImapClient("imap.domain.com", 993, "user@domain.com", "pwd", ae.clients.SecurityOptions.SSL_IMPLICIT)

client.select_folder("Inbox")

messages = client.list_messages()
print(f"Total Messages: {len(messages)}")

पेजिंग समर्थन के साथ संदेश सूचीबद्ध करें

परिदृश्यों में, जहाँ ईमेल सर्वर में बड़ी संख्या में संदेश होते हैं, अक्सर पेजिंग समर्थन के साथ संदेशों को सूचीबद्ध या प्राप्त करना वांछनीय होता है। Aspose.Email ImapClient class आपको पेजिंग समर्थन के साथ सर्वर से संदेश प्राप्त करने की अनुमति देता है।

संदेशों को पुनरावर्ती रूप से सूचीबद्ध करें

IMAP प्रोटोकॉल एक मेलबॉक्स फ़ोल्डर से संदेशों की पुनरावर्ती (recursive) सूची बनाने की अनुमति देता है। यह उसके सबफ़ोल्डर से भी संदेशों की सूची बनाना संभव बनाता है। नीचे दिया गया कोड स्निपेट दर्शाता है कि कैसे संदेशों को पुनरावर्ती रूप से सूचीबद्ध किया जाए:

MIME संदेश IDs सूचीबद्ध करें

यह ImapMessageInfo class एक सुविधाजनक तरीका प्रदान करता है जिससे आप MIME MessageId तक पहुंच सकते हैं, जिससे पूरे संदेश सामग्री को निकालने की आवश्यकता के बिना संदेशों की पहचान की जा सकती है। नीचे कोड स्निपेट दिखाता है कि कैसे MIME MessageId को सूचीबद्ध किया जाए:

मल्टी-कनेक्शन के साथ संदेश सूचीबद्ध करें

यह ImapClient class एक use_multi_connection प्रॉपर्टी प्रदान करता है, जो भारी लोड वाले ऑपरेशनों के लिए कई कनेक्शन उपयोग करने में सक्षम बनाती है। अतिरिक्त रूप से, आप connections_quantity प्रॉपर्टी का उपयोग करके मल्टी-कनेक्शन मोड में कनेक्शन की संख्या निर्दिष्ट कर सकते हैं। नीचे दिया गया कोड स्निपेट दर्शाता है कि संदेशों को सूचीबद्ध करने के लिए मल्टी-कनेक्शन मोड का उपयोग कैसे किया जाए:

import aspose.email as ae

client = ae.clients.imap.ImapClient("imap.domain.com", 993, "user@domain.com", "pwd", ae.clients.SecurityOptions.SSL_IMPLICIT)

client.select_folder("Inbox")
client.connections_quantity = 5
client.use_multi_connection = ae.clients.MultiConnectionMode.ENABLE

message_info_col = client.list_messages(True)

कृपया ध्यान दें कि इस मोड का उपयोग अनिवार्य रूप से प्रदर्शन वृद्धि नहीं लाता।

क्रमांक या यूनिक ID द्वारा संदेश प्राप्त करें

Aspose.Email API आपको दो सूचियाँ बनाने की अनुमति देती है, एक में क्रमांक (sequence numbers) होते हैं और दूसरी में इनबॉक्स के सभी संदेशों के यूनिक IDs होते हैं। उनके पहचानकर्ताओं द्वारा IMAP सर्वर से संदेश प्राप्त करने के लिए, fetch_messages मेथड का उपयोग करें ImapClient class। नीचे दिया गया कोड स्निपेट दर्शाता है कि पहचानकर्ता द्वारा संदेश कैसे सूचीबद्ध किए जाएँ:

import aspose.email as ae

client = ae.clients.imap.ImapClient("imap.domain.com", 993, "user@domain.com", "pwd", ae.clients.SecurityOptions.SSL_IMPLICIT)

# List messages
message_info_col = client.list_messages()
print("ListMessages Count:", message_info_col.count)

# Get sequence numbers and unique IDs
sequence_number_ar = [mi.sequence_number for mi in message_info_col]
unique_id_ar = [mi.unique_id for mi in message_info_col]

# Fetch messages by sequence number
fetched_messages_by_snum = client.fetch_messages(sequence_number_ar)
print("FetchMessages-sequenceNumberAr Count:", len(fetched_messages_by_snum))

# Fetch messages by UID
fetched_messages_by_uid = client.fetch_messages(unique_id_ar)
print("FetchMessages-uniqueIdAr Count:", len(fetched_messages_by_uid))

संदेशों को अवरोही क्रम में प्राप्त करें

संदेश प्राप्ति के लिए पेजिंग सेटिंग्स को परिभाषित करके यह कार्य पूरा किया जाता है। इसके लिए, ascending_sorting प्रॉपर्टी का उपयोग करें PageSettings class जो IMAP क्लाइंट मॉड्यूल का हिस्सा है। ascending_sorting एट्रिब्यूट को सेट करें PageSettings ऑब्जेक्ट को False सेट किया गया। यह दर्शाता है कि डिफ़ॉल्ट रूप से प्राप्ति के दौरान संदेशों को अवरोही क्रम में सॉर्ट किया जाना चाहिए। नीचे दिया गया कोड स्निपेट दिखाता है कि कैसे अवरोही क्रम में संदेश प्राप्त किए जाएँ:

import aspose.email as ae

client = ae.clients.imap.ImapClient("imap.domain.com", 993, "user@domain.com", "pwd", ae.clients.SecurityOptions.SSL_IMPLICIT)

page_settings = ae.clients.imap.PageSettings
page_settings.ascending_sorting = False
page_info = client.list_messages_by_page(5, page_settings)
messages = page_info.items

for message in messages:
    print(message.subject)

सर्वर से संदेश प्राप्त करें और डिस्क पर सहेजें

यह ImapClient class IMAP सर्वर से संदेश प्राप्त कर सकता है और उन्हें EML फॉर्मेट में स्थानीय डिस्क पर सहेज सकता है। डिस्क पर संदेश सहेजने के लिए निम्नलिखित चरण आवश्यक हैं:

  1. उपयोग करें ImapClient class जिसमें आवश्यक पैरामीटर (host, port, username, password) होते हैं ताकि IMAP सर्वर से कनेक्ट किया जा सके।
  2. select_folder मेथड को कॉल करके इच्छित फ़ोल्डर चुनें (उदा., "Inbox")
  3. list_messages मेथड का उपयोग करके संदेशों को दोहराते हुए प्राप्त करें।
  4. संदेशों को सहेजने के लिए, प्रत्येक संदेश के लिए save_message मेथड का उपयोग करके डायरेक्टरी निर्दिष्ट करें, और अद्वितीयता के लिए फ़ाइल नाम में यूनिक आईडी जोड़ें।

नीचे दिया गया कोड स्निपेट दर्शाता है कि सर्वर से ईमेल संदेश कैसे प्राप्त करें और उन्हें सहेजें:

MSG फ़ॉर्मेट में संदेश सहेजें

इमेल को MSG फॉर्मेट में सहेजने के लिए, fetch_message मेथड को कॉल करें ImapClient class। यह संदेश को एक instance के रूप में लौटाता है MailMessage class। तब MailMessage.save() मेथड को कॉल करके संदेश को MSG में सहेजा जा सकता है। नीचे दिया गया कोड स्निपेट दिखाता है कि MSG फॉर्मेट में संदेश कैसे सहेजे जाएँ।

अतिरिक्त संदेश पैरामीटर प्राप्त करें (सारांश जानकारी)

नीचे दिया गया कोड स्निपेट Aspose.Email का उपयोग करके ईमेल सर्वर के साथ इंटरैक्ट करने का प्रदर्शन करता है। ImapClient ईमेल संदेश भेजने और उन्हें नियंत्रित करने के लिए। कोड संदेश UID का उपयोग करके अतिरिक्त पैरामीटर ("X-GM-MSGID", "X-GM-THRID") के साथ सारांश जानकारी प्राप्त करता है। समान जानकारी क्रमांक (sequence number) का उपयोग करके भी प्राप्त की जाती है।

List-Unsubscribe हेडर प्राप्त करें

"ListUnsubscribe" हेडर आमतौर पर मेलिंग लिस्ट या स्वचालित ईमेल सिस्टम द्वारा भेजे गए ईमेल संदेशों के हेडर में शामिल किया जाता है। यह एक लिंक या ईमेल पता प्रदान करता है जिसे प्राप्तकर्ता मेलिंग लिस्ट या स्वचालित ईमेल से अनसब्सक्राइब करने के लिए उपयोग कर सकते हैं। Aspose.Email ’list_unsubscribe’ प्रॉपर्टी प्रदान करता है ImapMessageInfo इस हेडर को पुनः प्राप्त करने के लिए क्लास। नीचे दिया गया कोड स्निपेट प्रॉपर्टी के उपयोग को दर्शाता है और अनचाहे ईमेल से अनसब्सक्राइब करने की प्रक्रिया को स्वचालित करने वाले सिस्टम का हिस्सा के रूप में उपयोग किया जा सकता है।

import aspose.email as ae

client = ae.clients.imap.ImapClient("imap.domain.com", 993, "user@domain.com", "pwd", ae.clients.SecurityOptions.SSL_IMPLICIT)

message_info_col = client.list_messages()

# Iterate through each message
for imap_message_info in message_info_col:
    print("ListUnsubscribe Header:", imap_message_info.list_unsubscribe)

संदेश पहचान सूचना प्राप्त करें

ईमेल संदेशों को पुनर्प्राप्त और प्रोसेस करते समय, आप उनके क्रमांक (sequence numbers) का उपयोग करके संदेशों का विवरण प्राप्त कर सकते हैं।

निम्न सुविधाओं का उपयोग IMAP मेलबॉक्स के साथ इंटरैक्ट करने के लिए किया जाता है:

नीचे दिया गया कोड स्निपेट दिखाता है कि संदेशों के पहचान जानकारी कैसे प्राप्त की जाए:

import aspose.email as ae

client = ae.clients.imap.ImapClient("imap.domain.com", 993, "user@domain.com", "pwd", ae.clients.SecurityOptions.SSL_IMPLICIT)

msg_infos = client.list_messages("INBOX")

for msg_info in msg_infos:
    # fetch by sequence number
    msg = client.fetch_message(msg_info.sequence_number)

    # fetch by unique id
    msg = client.fetch_message(msg_info.unique_id)

IMAP ईमेल संदेशों से अटैचमेंट सूचीबद्ध करें

अटैचमेंट की जानकारी जैसे नाम, आकार प्राप्त करने के लिए, बिना अटैचमेंट डेटा को फ़ेच किए, नीचे दी गई लाइब्रेरी संसाधनों का उपयोग करें:

  • ImapAttachmentInfo class - एक अटैचमेंट जानकारी (आकार, नाम, मीडिया टाइप) को दर्शाता है।

  • ImapAttachmentInfoCollection class - … का संग्रह दर्शाता है ImapAttachmentInfo.

  • list_attachments(sequence_number) मेथड का ImapClient class - संदेश के अटैचमेंट जानकारी का एक iterable या collection प्राप्त करता है।

नीचे दिया गया कोड नमूना Aspose.Email का उपयोग करके प्रत्येक ईमेल संदेश के लिए अटैचमेंट की सूची दिखाता है। ImapClient:

# List messages
message_info_col = client.list_messages()

# Iterate through each message
for message_info in message_info_col:
    print(f"Attachments for message with sequence number {message_info.sequence_number}:")

    # List attachments for the current message
    attachment_info_col = client.list_attachments(message_info.sequence_number)

    # Iterate through each attachment
    for attachment_info in attachment_info_col:
        print(f"Attachment: {attachment_info.name} (size: {attachment_info.size})")