العمل مع القواعد على خادم Exchange

إدارة القواعد

يمكن استخدام Aspose.Email for Java لإدارة القواعد على خادم Exchange باستخدام الـ EWSClient فئة. تستخدم هذه الفئة Exchange Web Services (EWS)، المتاحة في Exchange Server 2007 والإصدارات اللاحقة. لعرض كيفية إدارة القواعد، توضح هذه المقالة كيفية:

  • قراءة القواعد الموجودة بالفعل على الخادم.
  • إنشاء قاعدة جديدة.
  • تحديث قاعدة موجودة.

يتطلب Microsoft Exchange Server 2010 Service Pack 1 لجميع الميزات الموضحة في هذه المقالة.

قراءة القواعد

للحصول على جميع القواعد من خادم Exchange:

  1. اتصل بخادم Exchange باستخدام فئة 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، نفّذ الخطوات التالية:

  1. اتصل بخادم Exchange باستخدام فئة 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:

  1. اتصل بخادم Exchange باستخدام فئة 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);
    }
}