Работа с правила в Exchange Server

Управление на правила

Aspose.Email for Java може да се използва за управление на правилата в Exchange Server, използвайки EWSClient клас. Този клас използва Exchange Web Services (EWS), които са достъпни в Exchange Server 2007 и по-късни издания. За да покажем как да управляваме правила, тази статия обяснява как да:

  • Прочетете правилата, вече налични на сървъра.
  • Създайте ново правило.
  • Актуализирайте съществуващо правило.

Microsoft Exchange Server 2010 Service Pack 1 е необходим за всички функции, описани в тази статия.

Четене на правила

За получаване на всички правила от Exchange Server:

  1. Свържете се с Exchange Server, използвайки класа IEWSClient.
  2. Извикайте метода IEWSClient.getInboxRules(), за да получите всички правила.
  3. В foreach цикъл прегледайте всички правила и покажете свойствата им, като условия, действия и име.

Следният кодов фрагмент показва как да четете правилата.

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());
    }
}

Създаване на ново правило

За създаване на ново правило в Exchange Server, изпълнете следните стъпки:

  1. Свържете се с Exchange Server, използвайки класа IEWSClient.
  2. Създайте нова инстанция на класа InboxRule и задайте следните задължителни свойства:
    1. Показвано име
    2. Условия
    3. Действия
  3. Извикайте метода IEWSClient.createInboxRule(), за да създадете правилото.

Следният кодов фрагмент показва как да създадете ново правило.

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);

Актуализиране на правило

За актуализиране на правило в Exchange Server:

  1. Свържете се с Exchange Server, използвайки класа IEWSClient.
  2. Извикайте метода IEWSClient.getInboxRules(), за да получите всички правила.
  3. В foreach цикъл прегледайте всички правила и намерете правилото, което искате да промените, като съвпаднете DisplayName в условие.
  4. Актуализирайте свойствата на правилото
  5. Извикайте метода IEWSClient.updateInboxRule(), за да актуализирате правилото.

Следният кодов фрагмент показва как да актуализирате правило.

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);
    }
}