How to Filter Email Messages from Exchange Mailbox inside Java Apps
This technical tip shows how Java developers can access, filter messages from exchange mailbox inside Java application. The ExchangeClient class provides the listMessages() method which gets all messages from a mailbox. To get only messages which match some condition, use the overloaded ListMessages() method which takes the MailQuery class as an argument. The MailQuery class provides various properties for specifying conditions, for example date, subject, sender and recipient. In addition, the API also allows to apply case-sensitivity filters for retrieving emails from mailbox.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
//your code here...The code examples below show how to connect to an IMAP mailbox and get messages that have the string "Newsletter" in the subject
and were sent today.
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/2015 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.");
IEWClient can also be used for this purpose as shown below:
// Create instance of IEWSClient class by giving credentials
IEWSClient client = EWSClient.getEWSClient("https://outlook.office365.com/ews/exchange.asmx", "testUser", "pwd", "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/2015 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.");
Get Messages that Meet Specific Criteria
X
Url: http://www.aspose.com/java/email-component.aspx
Language: Java | User: Sheraz Khan | Created: May 20, 2015 | Tags: filter messages from exchange mailbox Java Email API Connect to Exchange server Case-Sensitive Email Filtering get a message in particular date range Get emails from specific sender Get emails from specific domain