Nachrichten aus einem Exchange-Postfach mit WebDav filtern
Nachrichten mit Web Dav filtern
Um gefilterte Nachrichten aus einem Postfach zu erhalten:
- Verbindung zum Exchange-Server herstellen.
- Erstellen Sie eine Instanz von MailQuery und setzen Sie die gewünschten Eigenschaften.
- Rufen Sie die Methode ExchangeClient.listMessages(MailQuery query) auf und übergeben Sie das MailQuery in den Parametern, um nur die gefilterten Nachrichten zu erhalten.
Die nachstehenden Codebeispiele zeigen, wie man sich mit einem Exchange-Postfach verbindet und Nachrichten abruft, deren Betreff die Zeichenkette "Newsletter" enthält und die heute gesendet wurden.
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.");
Nachrichten erhalten, die bestimmte Kriterien erfüllen
Die obigen Codebeispiele filtern Nachrichten anhand des E-Mail-Betreffs und des Datums. Wir können auch nach anderen Eigenschaften filtern. Nachstehend einige Beispiele für das Festlegen von Bedingungen mit MailQuery.
Filterkriterium Heutiges Datum
Der folgende Codeabschnitt zeigt, wie Sie alle E-Mails nach dem heutigen Datum filtern.
// Emails that arrived today
MailQueryBuilder builder = new MailQueryBuilder();
builder.getInternalDate().on(new Date());
Filterkriterium Datumsbereich
Der folgende Codeabschnitt zeigt, wie Sie alle E-Mails nach dem Datumsbereich filtern.
MailQueryBuilder builder = new MailQueryBuilder();
builder.getInternalDate().beforeOrEqual(new Date());
builder.getInternalDate().since(new Date(new Date().getTime() + TimeUnit.DAYS.toDays(1)));
Filterkriterium Bestimmter Absender
Der folgende Codeabschnitt zeigt, wie Sie alle E-Mails nach einem bestimmten Absender filtern.
MailQueryBuilder builder = new MailQueryBuilder();
// Get emails from specific sender
builder.getFrom().contains("saqib.razzaq@127.0.0.1");
Filterkriterium Bestimmte Domain
Der folgende Codeabschnitt zeigt, wie Sie alle E-Mails nach einer bestimmten Domain filtern.
MailQueryBuilder builder = new MailQueryBuilder();
// Get emails from specific domain
builder.getFrom().contains("SpecificHost.com");
Filterkriterium Bestimmter Empfänger
Der folgende Codeabschnitt zeigt, wie Sie alle E-Mails nach einem bestimmten Empfänger filtern.
MailQueryBuilder builder = new MailQueryBuilder();
// Get emails sent to specific recipient
builder.getTo().contains("recipient");
Filterkriterium Nach MessageID
Der folgende Codeabschnitt zeigt, wie Sie alle E-Mails nach MessageID filtern.
// Get email with specific MessageId
ExchangeQueryBuilder builder1 = new ExchangeQueryBuilder();
builder1.getMessageId().equals("MessageID");
Filterkriterium Alle Zustellungsbenachrichtigungen
Der folgende Codeabschnitt zeigt, wie Sie alle E-Mails basierend auf allen Zustellungsbenachrichtigungen filtern.
// Get Mail Delivery Notifications
builder1 = new ExchangeQueryBuilder();
builder1.getContentClass().equals(ContentClassType.getMDN().toString());
Komplexe Abfragen erstellen
Wenn verschiedene QueryBuilder-Eigenschaften in separaten Anweisungen festgelegt werden, müssen alle Bedingungen erfüllt sein. Zum Beispiel, um eine Nachricht in einem bestimmten Datumsbereich und von einem bestimmten Host zu erhalten, schreiben Sie drei Anweisungen:
Abfragen mit AND kombinieren
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)));
Abfragen mit OR kombinieren
QueryBuilder bietet die or()-Methode, die zwei MailQuery-Instanzen als Parameter übernimmt. Sie ruft Nachrichten ab, die einer der beiden angegebenen Bedingungen entsprechen. Das nachstehende Beispiel filtert Nachrichten, die entweder das Wort "test" im Betreff oder "noreply@host.com" als Absender haben.
MailQueryBuilder builder = new MailQueryBuilder();
// Specify OR condition
builder.or(builder.getSubject().contains("test"), builder.getFrom().contains("noreply@host.com"));
Fallabhängige E-Mail-Filterung
E-Mails können anhand der Groß‑/Kleinschreibung gefiltert werden, indem das IgnoreCase-Flag im Filterkriterium angegeben wird, wie im folgenden Beispiel gezeigt.
//IgnoreCase is True
MailQueryBuilder builder1 = new MailQueryBuilder();
builder1.getFrom().contains("tesT", true);
MailQuery query1 = builder1.getQuery();