WebDav का उपयोग करके Exchange मेलबॉक्स से संदेश फ़िल्टर करें

Web Dav का उपयोग करके संदेश फ़िल्टर करें

मेलबॉक्स से फ़िल्टर किए गए संदेश प्राप्त करने के लिए:

  1. Exchange सर्वर से कनेक्ट हों।
  2. MailQuery का एक इंस्टेंस बनाएं और वांछित प्रॉपर्टीज़ सेट करें।
  3. ExchangeClient.listMessages(MailQuery query) मेथड को कॉल करें और पैरामीटर में MailQuery पास करें ताकि केवल फ़िल्टर किए गए संदेश मिलें।

नीचे के कोड उदाहरण दिखाते हैं कि कैसे एक एक्सचेंज मेलबॉक्स से कनेक्ट हों और ऐसे संदेश प्राप्त करें जिनके विषय में "Newsletter" स्ट्रिंग हो और आज भेजे गए हों।

ExchangeClient client = new ExchangeClient("http://MachineName/exchange/Username", "username", "password", "domain");
SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy HH:mm:ss");

// Query building by means of ExchangeQueryBuilder class
ExchangeQueryBuilder builder = new ExchangeQueryBuilder();
// Subject contains "Newsletter"
builder.getSubject().contains("Newsletter");

// Emails that arrived today
try {
	builder.getInternalDate().on(sdf.parse("10/05/2016 10:00:00"));
} catch (ParseException e) {
	e.printStackTrace();
}

// Build the query
MailQuery query = builder.getQuery();

// Get list of messages
ExchangeMessageInfoCollection messages = client.listMessages(client.getMailboxInfo().getInboxUri(), query, false);
System.out.println("Imap: " + messages.size() + " message(s) found.");

विशिष्ट मानदंडों को पूरा करने वाले संदेश प्राप्त करें

ऊपर के कोड नमूने ईमेल विषय और तिथि के आधार पर संदेशों को फ़िल्टर करते हैं। हम अन्य प्रॉपर्टीज़ पर भी फ़िल्टर कर सकते हैं। नीचे कुछ उदाहरण हैं जो स्थितियों को सेट करने के लिए उपयोग किए गए हैं MailQuery.

आज की तिथि के लिए फ़िल्टर मानदंड

निम्नलिखित कोड स्निपेट दिखाता है कि सभी ईमेल को आज की तिथि के आधार पर कैसे फ़िल्टर करें।

// Emails that arrived today
MailQueryBuilder builder = new MailQueryBuilder();
builder.getInternalDate().on(new Date());

तिथि रेंज के लिए फ़िल्टर मानदंड

निम्नलिखित कोड स्निपेट दिखाता है कि सभी ईमेल को तिथि रेंज के आधार पर कैसे फ़िल्टर करें।

MailQueryBuilder builder = new MailQueryBuilder();
builder.getInternalDate().beforeOrEqual(new Date());
builder.getInternalDate().since(new Date(new Date().getTime() + TimeUnit.DAYS.toDays(1)));

विशिष्ट प्रेषक के लिए फ़िल्टर मानदंड

निम्नलिखित कोड स्निपेट दिखाता है कि सभी ईमेल को एक विशिष्ट प्रेषक के आधार पर कैसे फ़िल्टर करें।

MailQueryBuilder builder = new MailQueryBuilder();
// Get emails from specific sender
builder.getFrom().contains("saqib.razzaq@127.0.0.1");

विशिष्ट डोमेन के लिए फ़िल्टर मानदंड

निम्नलिखित कोड स्निपेट दिखाता है कि सभी ईमेल को एक विशिष्ट डोमेन के आधार पर कैसे फ़िल्टर करें।

MailQueryBuilder builder = new MailQueryBuilder();
// Get emails from specific domain
builder.getFrom().contains("SpecificHost.com");

विशिष्ट प्राप्तकर्ता के लिए फ़िल्टर मानदंड

निम्नलिखित कोड स्निपेट दिखाता है कि सभी ईमेल को एक विशिष्ट प्राप्तकर्ता के आधार पर कैसे फ़िल्टर करें।

MailQueryBuilder builder = new MailQueryBuilder();
// Get emails sent to specific recipient
builder.getTo().contains("recipient");

MessageID द्वारा फ़िल्टर मानदंड

निम्नलिखित कोड स्निपेट दिखाता है कि सभी ईमेल को MessageID के आधार पर कैसे फ़िल्टर करें।

// Get email with specific MessageId
ExchangeQueryBuilder builder1 = new ExchangeQueryBuilder();
builder1.getMessageId().equals("MessageID");

सभी मेल डिलीवरी नोटिफिकेशन के लिए फ़िल्टर मानदंड

निम्नलिखित कोड स्निपेट दिखाता है कि सभी ईमेल को सभी मेल डिलीवरी नोटिफिकेशन्स के आधार पर कैसे फ़िल्टर करें।

// Get Mail Delivery Notifications
builder1 = new ExchangeQueryBuilder();
builder1.getContentClass().equals(ContentClassType.getMDN().toString());

जटिल क्वेरियों का निर्माण

यदि विभिन्न QueryBuilder प्रॉपर्टीज़ को अलग-अलग कथनों में सेट किया जाए, तो सभी शर्तें पूरी होंगी। उदाहरण के लिए, किसी विशिष्ट तिथि रेंज और एक निर्दिष्ट होस्ट से संदेश पाने के लिए, तीन कथन लिखें:

AND के साथ क्वेरीज़ को संयोजित करना

MailQueryBuilder builder = new MailQueryBuilder();

// Emails from specific host
builder.getFrom().contains("SpecificHost.com");
// AND all emails that arrived before today
builder.getInternalDate().before(new Date());
// AND all emails that arrived since 7 days ago
builder.getInternalDate().since(new Date(new Date().getTime() + TimeUnit.DAYS.toDays(-7)));

OR के साथ क्वेरीज़ को संयोजित करना

QueryBuilder or() मेथड प्रदान करता है जो दो MailQuery इंस्टेंस को पैरामीटर के रूप में लेता है। यह उन संदेशों को प्राप्त करता है जो निर्दिष्ट दो स्थितियों में से किसी एक से मेल खाते हैं। नीचे का उदाहरण उन संदेशों को फ़िल्टर करता है जिनके विषय में शब्द "test" है या प्रेषक "noreply@host.com" है।

MailQueryBuilder builder = new MailQueryBuilder();
		
// Specify OR condition
builder.or(builder.getSubject().contains("test"), builder.getFrom().contains("noreply@host.com"));

केस-सेंसिटिव ईमेल फ़िल्टरिंग

ईमेल को केस-सेंसिटिविटी के आधार पर फ़िल्टर किया जा सकता है, फ़िल्टर मानदंडों में IgnoreCase फ़्लैग निर्दिष्ट करके, जैसा कि नीचे के उदाहरण में दिखाया गया है।

//IgnoreCase is True
MailQueryBuilder builder1 = new MailQueryBuilder();
builder1.getFrom().contains("tesT", true);
MailQuery query1 = builder1.getQuery();