עבודה עם כללים ב‑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);
    }
}