Lavorare con le regole su Exchange Server

Gestione delle regole

Aspose.Email for Java può essere usato per gestire le regole su Exchange Server usando il EWSClient classe. Questa classe utilizza Exchange Web Services (EWS), disponibili in Exchange Server 2007 e versioni successive. Per mostrare come gestire le regole, questo articolo spiega come:

  • Leggi le regole già presenti sul server.
  • Crea una nuova regola.
  • Aggiorna una regola esistente.

Microsoft Exchange Server 2010 Service Pack 1 è richiesto per tutte le funzionalità descritte in questo articolo.

Leggi le regole

Per ottenere tutte le regole dal server Exchange:

  1. Connettiti a un server Exchange usando la classe IEWSClient.
  2. Chiama il metodo IEWSClient.getInboxRules() per ottenere tutte le regole.
  3. In un ciclo foreach, attraversa tutte le regole e mostra le proprietà della regola come condizioni, azioni e nome.

Il seguente frammento di codice mostra come leggere le regole.

IEWSClient client = EWSClient.getEWSClient(mailboxURI, credential);

System.out.println("Connected to Exchange server");

// Get all Inbox Rules
InboxRule[] inboxRules = client.getInboxRules();

// Display information about each rule
for (InboxRule inboxRule : inboxRules) {
    System.out.println("Display Name: " + inboxRule.getDisplayName());

    // Check if there is a "From Address" condition
    if (inboxRule.getConditions().getFromAddresses().size() > 0) {
        for (MailAddress fromAddress : (Iterable<MailAddress>) inboxRule.getConditions().getFromAddresses()) {
            System.out.println("From: " + fromAddress.getDisplayName() + " - " + fromAddress.getAddress());
        }
    }
    // Check if there is a "Subject Contains" condition
    if (inboxRule.getConditions().containsSubjectStrings().size() > 0) {
        // foreach to while statements conversion
        for (String subject : inboxRule.getConditions().containsSubjectStrings()) {
            System.out.println("Subject contains: " + subject);
        }
    }
    // Check if there is a "Move to Folder" action
    if (inboxRule.getActions().getMoveToFolder().length() > 0) {
        System.out.println("Move message to folder: " + inboxRule.getActions().getMoveToFolder());
    }
}

Creazione di una nuova regola

Per creare una nuova regola sul server Exchange, esegui i seguenti passaggi:

  1. Connettiti a un server Exchange usando la classe IEWSClient.
  2. Crea una nuova istanza della classe InboxRule e imposta le seguenti proprietà obbligatorie:
    1. Nome visualizzato
    2. Condizioni
    3. Azioni
  3. Chiama il metodo IEWSClient.createInboxRule() per creare la regola.

Il seguente frammento di codice mostra come creare una nuova regola.

IEWSClient client = EWSClient.getEWSClient(mailboxURI, credential);

System.out.println("Connected to Exchange server");

InboxRule rule = new InboxRule();
rule.setDisplayName("Message from client ABC");

// Add conditions
RulePredicates newRules = new RulePredicates();
// Set Subject contains string "ABC" and Add the conditions
newRules.containsSubjectStrings().addItem("ABC");
newRules.getFromAddresses().addMailAddress(new MailAddress("administrator@ex2010.local", true));
rule.setConditions(newRules);

// Add Actions and Move the message to a folder
RuleActions newActions = new RuleActions();
newActions.setMoveToFolder("120:AAMkADFjMjNjMmNjLWE3NzgtNGIzNC05OGIyLTAwNTgzNjRhN2EzNgAuAAAAAABbwP+Tkhs0TKx1GMf0D/cPAQD2lptUqri0QqRtJVHwOKJDAAACL5KNAAA=AQAAAA==");
rule.setActions(newActions);
client.createInboxRule(rule);

Aggiornamento di una regola

Per aggiornare una regola sul server Exchange:

  1. Connettiti a un server Exchange usando la classe IEWSClient.
  2. Chiama il metodo IEWSClient.getInboxRules() per ottenere tutte le regole.
  3. In un ciclo foreach, attraversa tutte le regole e ottieni la regola da modificare confrontando il DisplayName in una condizione.
  4. Aggiorna le proprietà della regola
  5. Chiama il metodo IEWSClient.updateInboxRule() per aggiornare la regola.

Il seguente frammento di codice mostra come aggiornare una regola.

IEWSClient client = EWSClient.getEWSClient(mailboxURI, credential);

System.out.println("Connected to Exchange server");

// Get all Inbox Rules
InboxRule[] inboxRules = client.getInboxRules();

// Loop through each rule
for (InboxRule inboxRule : inboxRules) {
    System.out.println("Display Name: " + inboxRule.getDisplayName());
    if ("Message from client ABC".equals(inboxRule.getDisplayName())) {
        System.out.println("Updating the rule....");
        inboxRule.getConditions().getFromAddresses().set_Item(0, new MailAddress("administrator@ex2010.local", true));
        client.updateInboxRule(inboxRule);
    }
}