Trabajando con reglas en el servidor Exchange
Administración de reglas
Aspose.Email for Java puede usarse para administrar las reglas en Exchange Server usando el EWSClient clase. Esta clase usa Exchange Web Services (EWS), que están disponibles en Exchange Server 2007 y versiones posteriores. Para mostrar cómo administrar reglas, este artículo explica cómo:
- Leer las reglas que ya están en el servidor.
- Crear una regla nueva.
- Actualizar una regla existente.
Se requiere Microsoft Exchange Server 2010 Service Pack 1 para todas las funciones descritas en este artículo.
Leer reglas
Para obtener todas las reglas del servidor Exchange:
- Conéctese a un servidor Exchange usando la clase IEWSClient.
- Llame al método IEWSClient.getInboxRules() para obtener todas las reglas.
- En un bucle foreach, recorra todas las reglas y muestre las propiedades de la regla como condiciones, acciones y nombre.
El siguiente fragmento de código muestra cómo leer reglas.
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());
}
}
Creando una nueva regla
Para crear una nueva regla en el servidor Exchange, siga los siguientes pasos:
- Conéctese a un servidor Exchange usando la clase IEWSClient.
- Cree una nueva instancia de la clase InboxRule y establezca las siguientes propiedades obligatorias:
- Nombre para mostrar
- Condiciones
- Acciones
- Llame al método IEWSClient.createInboxRule() para crear la regla.
El siguiente fragmento de código muestra cómo crear una nueva regla.
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);
Actualizando una regla
Para actualizar una regla en el servidor Exchange:
- Conéctese a un servidor Exchange usando la clase IEWSClient.
- Llame al método IEWSClient.getInboxRules() para obtener todas las reglas.
- En un bucle foreach, recorre todas las reglas y obtén la regla que deseas cambiar coincidiendo el DisplayName en una condición.
- Actualiza las propiedades de la regla
- Llame al método IEWSClient.updateInboxRule() para actualizar la regla.
El siguiente fragmento de código muestra cómo actualizar una regla.
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);
}
}