کار با قوانین در سرور Exchange

مدیریت قوانین

Aspose.Email for Java می‌تواند برای مدیریت قوانین در سرور Exchange با استفاده از EWSClient کلاس. این کلاس از Exchange Web Services (EWS) استفاده می‌کند که در Exchange Server 2007 و نسخه‌های بعدی در دسترس هستند. برای نشان دادن نحوه مدیریت قوانین، این مقاله توضیح می‌دهد چگونه:

  • خواندن قوانینی که قبلاً بر روی سرور هستند.
  • ایجاد یک قانون جدید.
  • به‌روزرسانی یک قانون موجود.

Microsoft Exchange Server 2010 Service Pack 1 برای تمام ویژگی‌های توصیف شده در این مقاله مورد نیاز است.

خواندن قوانین

برای دریافت تمام قوانین از سرور Exchange:

  1. با استفاده از کلاس IEWSClient به سرور Exchange متصل شوید.
  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. با استفاده از کلاس IEWSClient به سرور Exchange متصل شوید.
  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. با استفاده از کلاس IEWSClient به سرور Exchange متصل شوید.
  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);
    }
}