Python में IMAP ईमेल खोजें और फ़िल्टर करें
मेलबॉक्स से सभी संदेशों को प्राप्त करने हेतु Aspose.Email ’list_messages’ मेथड प्रदान करता है ImapClient वर्ग। केवल उन संदेशों को प्राप्त करने के लिए जो विशिष्ट शर्तों को पूरा करते हैं, आप ओवरलोडेड ’list_messages’ मेथड का उपयोग कर सकते हैं जो एक MailQuery को आर्ग्यूमेंट के रूप में। MailQuery वर्ग इन स्थितियों को परिभाषित करने के लिए विभिन्न प्रॉपर्टी प्रदान करता है, जैसे कि तिथि, विषय, प्रेषक और प्राप्तकर्ता।
पहला कोड नमूना दिखाता है कि कैसे तिथि और विषय दोनों के आधार पर संदेश फ़िल्टर किए जाएँ। अतिरिक्त उदाहरण अन्य मानदंडों के आधार पर फ़िल्टरिंग और अधिक जटिल क्वेरी बनाने को दर्शाते हैं। इसके अतिरिक्त, API सटीक फ़िल्टरिंग के लिए केस-सेंसिटिव खोज मानदंड का समर्थन करता है और मेलबॉक्स से संदेश फ़िल्टर करते समय खोज स्ट्रिंग की एन्कोडिंग निर्दिष्ट करने की अनुमति देता है।
IMAP सर्वर से संदेश फ़िल्टर और प्राप्त करें
एक सरल IMAP क्वेरी बनाएं
निम्न कोड स्निपेट का उपयोग करके IMAP मेलबॉक्स से कनेक्ट हों और आज प्राप्त हुए तथा विषय में "newsletter" शब्द वाले संदेश प्राप्त करें।
- उपयोगकर्ता नाम और पासवर्ड के साथ पोर्ट 993 का उपयोग करके IMAP सर्वर से कनेक्ट करें।
- "Inbox" फ़ोल्डर चुनें ताकि आने वाले ईमेल पर काम किया जा सके।
- का एक इंस्टेंस बनाएं ImapQueryBuilder खोज क्वेरी बनाने के लिए।
- खोज मानदंड निर्दिष्ट करें, उदाहरण के लिए, ईमेल का विषय "Newsletter" शामिल करे और आंतरिक तिथि आज की तिथि से मेल खाती हो।
- बिल्डर से प्राप्त करके खोज क्वेरी जनरेट करें।
- मानदंड को पूरा करने वाले संदेशों की सूची बनाने के लिए क्वेरी का उपयोग करें।
- खोज मानदंड से मेल खाने वाले संदेशों की कुल संख्या प्रदर्शित करें।
जटिल खोज मानदंड बनाएं
Aspose.Email यह भी संभव बनाता है कि आप डिलीवरी तिथि, रेंज के भीतर, विशिष्ट प्रेषक, विशिष्ट डोमेन, या विशिष्ट प्राप्तकर्ता जैसे मानदंडों के आधार पर ईमेल संदेशों को क्वेरी और फ़िल्टर करने के लिए जटिल खोज मानदंड बनाएं। इसके लिए, उपयोग करें MailQueryBuilder class और उसकी प्रॉपर्टी। नीचे दिए गए कोड उदाहरण आपको दिखाएंगे कि कैसे विशिष्ट मानदंडों द्वारा संदेश प्राप्त करें।
आज की तिथि द्वारा ईमेल फ़िल्टर करें
डिलीवरी तिथि द्वारा संदेश प्राप्त करने के लिए, ‘internal_date’ प्रॉपर्टी का उपयोग करें MailQueryBuilder क्लास, जैसा कि नीचे दिए गए कोड नमूने में दिखाया गया है:
import aspose.email as ae
from datetime import datetime
builder = ae.tools.search.MailQueryBuilder()
builder.internal_date.on(datetime.now())
तिथि सीमा द्वारा ईमेल फ़िल्टर करें
तारीख सीमा के भीतर संदेश प्राप्त करने हेतु, नीचे दिए गए कोड स्निपेट में दिखाए अनुसार वही ‘internal_date’ प्रॉपर्टी का उपयोग करके तारीख सीमा निर्दिष्ट करें:
import aspose.email as ae
from datetime import datetime, timedelta
builder = ae.tools.search.MailQueryBuilder()
# Emails that arrived in last 7 days
builder.internal_date.before(datetime.now())
builder.internal_date.since(datetime.today() - timedelta(days=7))
विशिष्ट प्रेषक द्वारा ईमेल फ़िल्टर करें
विशिष्ट प्रेषक से संदेश प्राप्त करने हेतु, ‘from_address’ प्रॉपर्टी का उपयोग करें MailQueryBuilder क्लास, जैसा कि नीचे दिए गए कोड नमूने में दिखाया गया है:
import aspose.email as ae
builder = ae.tools.search.MailQueryBuilder()
builder.from_address.contains("saqib.razzaq@127.0.0.1")
विशिष्ट डोमेन द्वारा ईमेल फ़िल्टर करें
एक विशिष्ट डोमेन से संदेश प्राप्त करने हेतु, नीचे दिए गए कोड स्निपेट में दिखाए अनुसार ‘from_address’ प्रॉपर्टी का उपयोग करें:
import aspose.email as ae
builder = ae.tools.search.MailQueryBuilder()
builder.from_address.contains("SpecificHost.com")
विशिष्ट प्राप्तकर्ता द्वारा ईमेल फ़िल्टर करें
एक विशिष्ट प्राप्तकर्ता के लिए संदेश प्राप्त करने हेतु, नीचे दिए गए कोड स्निपेट में दिखाए अनुसार ’to’ प्रॉपर्टी का उपयोग करें:
import aspose.email as ae
builder = ae.tools.search.MailQueryBuilder()
builder.to.contains("recipient")
आंतरिक तिथि द्वारा संदेश फ़िल्टर करें
निर्दिष्ट शर्तों जैसे "आंतरिक तिथि" और "विषय में शामिल" पर क्वेरी बनाएं। "आंतरिक तिथि" का अर्थ है वह तिथि और समय जब ईमेल संदेश प्राप्त हुआ या ईमेल सर्वर में जोड़ा गया, जिसे ‘internal_date’ प्रॉपर्टी का उपयोग करके सेट किया जा सकता है। ImapQueryBuilder वर्ग। नीचे दिया गया कोड नमूना दिखाता है कि कैसे विषय और तिथि मानदंड के आधार पर इनबॉक्स से विशिष्ट ईमेल प्राप्त किए जाएँ:
import aspose.email as ae
from datetime import datetime
client = ae.clients.imap.ImapClient("imap.domain.com", 993, "user@domain.com", "pwd")
client.select_folder("Inbox")
# Set conditions, Subject contains "Newsletter", Emails that arrived today
builder = ae.clients.imap.ImapQueryBuilder()
builder.subject.contains("Newsletter")
builder.internal_date.on(datetime.now())
# Build the query and Get list of messages
query = builder.get_query()
messages = client.list_messages(query)
for info in messages:
print(f"Internal Date: {info.internal_date}")
कस्टम कीवर्ड फ़्लैग द्वारा संदेश फ़िल्टर करें
कस्टम कीवर्ड फ़्लैग "custom1" और "custom2" वाले ईमेल खोजने के लिए IMAP मेलबॉक्स में क्वेरी बनाएं। क्वेरी बनाने के लिए, उपयोग करें ImapQueryBuilder वर्ग जो IMAP सर्वर से ईमेल प्राप्त करते समय फ़िल्टर करता है।
शुरू करने के लिए, क्वेरी बिल्डर का एक इंस्टेंस बनाएं। इस का उपयोग करके has_flags विधि, शर्तें जोड़ें जिससे केवल वे ईमेल शामिल हों जिनमें निर्दिष्ट IMAP कीवर्ड फ़्लैग हों। IMAP में कस्टम कीवर्ड, जिन्हें उपयोगकर्ता-परिभाषित फ़्लैग भी कहा जाता है, उपयोगकर्ताओं को विभिन्न उद्देश्यों के लिए ईमेल टैग या वर्गीकृत करने की अनुमति देते हैं, जैसे उनकी स्थिति को चिह्नित करना।
निम्न कोड स्निपेट दर्शाता है कि कैसे कस्टम कीवर्ड फ़्लैग के आधार पर ईमेल प्राप्त करने के लिए क्वेरी बनायीँ।
builder = ae.clients.imap.ImapQueryBuilder()
builder.has_flags(ae.clients.imap.ImapMessageFlags.keyword("custom1"))
builder.has_flags(ae.clients.imap.ImapMessageFlags.keyword("custom2"))
जटिल क्वेरियों का निर्माण
कभी-कभी एक से अधिक क्वेरी को पूरा करना आवश्यक होता है। Aspose.Email कई स्टेटमेंट्स में क्वेरी को संयोजित करके यह संभव बनाता है। एक बनाएं MailQueryBuilder ऑब्जेक्ट और उसकी प्रॉपर्टीज़ का उपयोग करके विशिष्ट क्वेरी बनाएं।
AND के साथ क्वेरीज़ को संयोजित करना
निम्नलिखित कोड स्निपेट दिखाता है कि कैसे AND के साथ क्वेरीज़ को संयोजित किया जाए।
import aspose.email as ae
from datetime import datetime, timedelta
builder = ae.tools.search.MailQueryBuilder()
builder.internal_date.before(datetime.now())
builder.internal_date.since(datetime.today() - timedelta(days=7))
builder.from_address.contains("SpecificHost.com")
OR के साथ क्वेरीज़ को संयोजित करना
निम्नलिखित कोड स्निपेट दिखाता है कि कैसे OR के साथ क्वेरी को मिलाया जाए।
builder.either(builder.subject.contains("test"), builder.from_address.contains("noreply@host.com"))
केस-सेंसिटिव फ़िल्टर लागू करना
API भी केस सेंसिटिव मानदंड के आधार पर मेलबॉक्स से ईमेल फ़िल्टर करने की क्षमता प्रदान करता है। निम्नलिखित मेथड्स StringComparisonField class केस सेंसिटिव फ्लैग्स निर्दिष्ट करके ईमेल खोजने की क्षमता प्रदान करता है।
- StringComparisonField.contains(value, ignore_case)
- StringComparisonField.equals(value, ignore_case)
- StringComparisonField.not_contains(value, ignore_case)
- StringComparisonField.not_equals(value, ignore_case)
निम्नलिखित कोड स्निपेट दिखाता है कि इस क्षमता को अपने प्रोजेक्ट में कैसे लागू करें:
builder = ae.tools.search.MailQueryBuilder()
builder.from_address.contains("noreply@host.com", True)
कस्टम खोज क्वेरी निष्पादित करें
एक IMAP मेलबॉक्स के लिए खोज क्वेरी बनाएं जो ईमेल को कस्टम Gmail खोज मानदंड के आधार पर फ़िल्टर करे — विशेष रूप से, वे ईमेल जिनमें संलग्नक हो।
शुरू करें एक इंस्टेंस बनाकर ImapQueryBuilder, जो जटिल IMAP खोज क्वेरी बनाने में मदद करता है। उपयोग करें custom_search क्वेरी बिल्डर में Gmail-विशिष्ट खोज स्ट्रिंग जोड़ने की विधि।
खोज स्ट्रिंग X-GM-RAW "has:attachment" Gmail के विस्तारित IMAP एट्रिब्यूट X-GM-RAW का उपयोग करती है, जिससे IMAP क्वेरी के भीतर Gmail की शक्तिशाली वेबमेल खोज सिंटैक्स का उपयोग संभव हो जाता है। यहाँ, has:attachment ऑपरेटर सभी संलग्नक वाले ईमेल लौटाता है।
निम्न कोड स्निपेट दिखाता है कि कैसे संलग्नक वाले सभी संदेश प्राप्त करने के लिए ईमेल फ़िल्टर करें:
builder = ae.clients.imap.ImapQueryBuilder()
builder.custom_search("X-GM-RAW \"has:attachment\"")
mailQuery = builder.get_query()
यह मेथड लक्षित ईमेल प्राप्त करने के लिए उन्नत Gmail-विशिष्ट फ़िल्टरिंग सक्षम करता है।