Arbeta med regler på Exchange Server

Hantera regler

Aspose.Email for Java kan användas för att hantera regler på Exchange Server med hjälp av EWSClient klass. Denna klass använder Exchange Web Services (EWS), som är tillgängliga i Exchange Server 2007 och senare versioner. För att visa hur man hanterar regler förklarar den här artikeln hur man:

  • Läs reglerna som redan finns på servern.
  • Skapa en ny regel.
  • Uppdatera en befintlig regel.

Microsoft Exchange Server 2010 Service Pack 1 krävs för alla funktioner som beskrivs i den här artikeln.

Läs regler

För att hämta alla regler från Exchange Server:

  1. Anslut till en Exchange Server med IEWSClient-klassen.
  2. Anropa IEWSClient.getInboxRules()-metoden för att hämta alla regler.
  3. I en foreach-loop, gå igenom alla regler och visa regelns egenskaper som villkor, åtgärder och namn.

Följande kodsnutt visar hur du läser regler.

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

Skapa en ny regel

För att skapa en ny regel på Exchange Server, följ dessa steg:

  1. Anslut till en Exchange Server med IEWSClient-klassen.
  2. Skapa en ny instans av InboxRule-klassen och sätt följande obligatoriska egenskaper:
    1. Visningsnamn
    2. Villkor
    3. Åtgärder
  3. Anropa IEWSClient.createInboxRule()-metoden för att skapa regeln.

Följande kodsnutt visar hur du skapar en ny regel.

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

Uppdatera en regel

För att uppdatera en regel på Exchange Server:

  1. Anslut till en Exchange Server med IEWSClient-klassen.
  2. Anropa IEWSClient.getInboxRules()-metoden för att hämta alla regler.
  3. I en foreach-loop, gå igenom alla regler och hämta den regel du vill ändra genom att matcha DisplayName i ett villkor.
  4. Uppdatera regelns egenskaper
  5. Anropa IEWSClient.updateInboxRule()-metoden för att uppdatera regeln.

Följande kodsnutt visar hur du uppdaterar en regel.

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