Filter Pesan dari Kotak Surat Exchange menggunakan WebDav
Filter Pesan menggunakan Web Dav
Untuk mendapatkan pesan yang difilter dari sebuah kotak surat:
- Hubungkan ke server Exchange.
- Buat sebuah instance MailQuery dan atur properti yang diinginkan.
- Panggil metode ExchangeClient.listMessages(MailQuery query) dan berikan MailQuery dalam parameter untuk hanya mendapatkan pesan yang difilter.
Contoh kode di bawah menunjukkan cara terhubung ke kotak surat Exchange dan mendapatkan pesan yang memiliki string "Newsletter" di subjek serta dikirim hari ini.
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.");
Dapatkan Pesan yang Memenuhi Kriteria Spesifik
Contoh kode di atas memfilter pesan berdasarkan subjek email dan tanggal. Kita juga dapat memfilter properti lain. Di bawah ini beberapa contoh penetapan kondisi menggunakan MailQuery.
Kriteria Filter Tanggal Hari Ini
Potongan kode berikut menunjukkan cara memfilter semua email berdasarkan tanggal hari ini.
// Emails that arrived today
MailQueryBuilder builder = new MailQueryBuilder();
builder.getInternalDate().on(new Date());
Kriteria Filter Rentang Tanggal
Potongan kode berikut menunjukkan cara memfilter semua email berdasarkan rentang tanggal.
MailQueryBuilder builder = new MailQueryBuilder();
builder.getInternalDate().beforeOrEqual(new Date());
builder.getInternalDate().since(new Date(new Date().getTime() + TimeUnit.DAYS.toDays(1)));
Kriteria Filter Pengirim Tertentu
Potongan kode berikut menunjukkan cara memfilter semua email berdasarkan pengirim tertentu.
MailQueryBuilder builder = new MailQueryBuilder();
// Get emails from specific sender
builder.getFrom().contains("saqib.razzaq@127.0.0.1");
Kriteria Filter Domain Tertentu
Potongan kode berikut menunjukkan cara memfilter semua email berdasarkan domain tertentu.
MailQueryBuilder builder = new MailQueryBuilder();
// Get emails from specific domain
builder.getFrom().contains("SpecificHost.com");
Kriteria Filter Penerima Tertentu
Potongan kode berikut menunjukkan cara memfilter semua email berdasarkan penerima tertentu.
MailQueryBuilder builder = new MailQueryBuilder();
// Get emails sent to specific recipient
builder.getTo().contains("recipient");
Kriteria Filter Berdasarkan MessageID
Potongan kode berikut menunjukkan cara memfilter semua email berdasarkan MessageID.
// Get email with specific MessageId
ExchangeQueryBuilder builder1 = new ExchangeQueryBuilder();
builder1.getMessageId().equals("MessageID");
Kriteria Filter Semua Notifikasi Pengiriman Surat
Potongan kode berikut menunjukkan cara memfilter semua email berdasarkan semua notifikasi pengiriman surat.
// Get Mail Delivery Notifications
builder1 = new ExchangeQueryBuilder();
builder1.getContentClass().equals(ContentClassType.getMDN().toString());
Membangun Kuiri Kompleks
Jika properti QueryBuilder yang berbeda diatur dalam pernyataan terpisah, semua kondisi akan dipenuhi. Misalnya, untuk mendapatkan pesan dalam rentang tanggal tertentu dan dari host spesifik, tulis tiga pernyataan:
Menggabungkan Kuiri dengan 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)));
Menggabungkan Kuiri dengan OR
QueryBuilder menyediakan metode or() yang mengambil dua instance MailQuery sebagai parameter. Metode ini mengambil pesan yang cocok dengan salah satu dari dua kondisi yang ditentukan. Contoh di bawah memfilter pesan yang memiliki kata "test" di subjek atau "noreply@host.com" sebagai pengirim.
MailQueryBuilder builder = new MailQueryBuilder();
// Specify OR condition
builder.or(builder.getSubject().contains("test"), builder.getFrom().contains("noreply@host.com"));
Filter Email Sensitif Huruf
Email dapat difilter berdasarkan sensitivitas huruf dengan menentukan flag IgnoreCase dalam kriteria filter sebagaimana ditunjukkan pada contoh berikut.
//IgnoreCase is True
MailQueryBuilder builder1 = new MailQueryBuilder();
builder1.getFrom().contains("tesT", true);
MailQuery query1 = builder1.getQuery();