Filtrera meddelanden från Exchange-inkorg med WebDav
Filtrera meddelanden med Web Dav
För att få filtrerade meddelanden från en inkorg:
- Anslut till Exchange-servern.
- Skapa en instans av MailQuery och sätt önskade egenskaper.
- Anropa metoden ExchangeClient.listMessages(MailQuery query) och skicka med MailQuery som parameter för att bara få de filtrerade meddelandena.
Kodexemplen nedan visar hur man ansluter till en Exchange-inkorg och hämtar meddelanden som har strängen "Newsletter" i ämnet och som skickades idag.
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.");
Hämta meddelanden som uppfyller specifika kriterier
Kodexemplen ovan filtrerar meddelanden baserat på e‑postens ämne och datum. Vi kan också filtrera på andra egenskaper. Nedan följer några exempel på att sätta villkoren med hjälp av MailQuery.
Filterkriterium dagens datum
Följande kodsnutt visar hur du filtrerar alla e‑postmeddelanden baserat på dagens datum.
// Emails that arrived today
MailQueryBuilder builder = new MailQueryBuilder();
builder.getInternalDate().on(new Date());
Filterkriterium datumintervall
Följande kodsnutt visar hur du filtrerar alla e‑postmeddelanden baserat på datumintervall.
MailQueryBuilder builder = new MailQueryBuilder();
builder.getInternalDate().beforeOrEqual(new Date());
builder.getInternalDate().since(new Date(new Date().getTime() + TimeUnit.DAYS.toDays(1)));
Filterkriterium specifik avsändare
Följande kodsnutt visar hur du filtrerar alla e‑postmeddelanden baserat på en specifik avsändare.
MailQueryBuilder builder = new MailQueryBuilder();
// Get emails from specific sender
builder.getFrom().contains("saqib.razzaq@127.0.0.1");
Filterkriterium specifik domän
Följande kodsnutt visar hur du filtrerar alla e‑postmeddelanden baserat på en specifik domän.
MailQueryBuilder builder = new MailQueryBuilder();
// Get emails from specific domain
builder.getFrom().contains("SpecificHost.com");
Filterkriterium specifik mottagare
Följande kodsnutt visar hur du filtrerar alla e‑postmeddelanden baserat på en specifik mottagare.
MailQueryBuilder builder = new MailQueryBuilder();
// Get emails sent to specific recipient
builder.getTo().contains("recipient");
Filterkriterium efter MessageID
Följande kodsnutt visar hur du filtrerar alla e‑postmeddelanden baserat på MessageID.
// Get email with specific MessageId
ExchangeQueryBuilder builder1 = new ExchangeQueryBuilder();
builder1.getMessageId().equals("MessageID");
Filterkriterium alla leveransaviseringar
Följande kodsnutt visar hur du filtrerar alla e‑postmeddelanden baserat på alla leveransaviseringar.
// Get Mail Delivery Notifications
builder1 = new ExchangeQueryBuilder();
builder1.getContentClass().equals(ContentClassType.getMDN().toString());
Bygga komplexa frågor
Om olika QueryBuilder‑egenskaper sätts i separata uttalanden, matchas alla villkor. Till exempel, för att få ett meddelande inom ett visst datumintervall och från en specifik värd, skriv tre uttalanden:
Kombinera frågor med 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)));
Kombinera frågor med OR
QueryBuilder tillhandahåller or()-metoden som tar två MailQuery‑instanser som parametrar. Den hämtar meddelanden som matchar någon av de två angivna villkoren. Exemplet nedan filtrerar meddelanden som antingen har ordet "test" i ämnet eller "noreply@host.com" som avsändare.
MailQueryBuilder builder = new MailQueryBuilder();
// Specify OR condition
builder.or(builder.getSubject().contains("test"), builder.getFrom().contains("noreply@host.com"));
Skiftlägeskänslig e‑postfiltrering
E‑post kan filtreras baserat på skiftlägeskänslighet genom att ange flaggan IgnoreCase i filterkriterierna, som i följande exempel.
//IgnoreCase is True
MailQueryBuilder builder1 = new MailQueryBuilder();
builder1.getFrom().contains("tesT", true);
MailQuery query1 = builder1.getQuery();