Travailler avec les règles sur le serveur Exchange
Gestion des règles
Aspose.Email for Java peut être utilisé pour gérer les règles sur le serveur Exchange en utilisant le EWSClient classe. Cette classe utilise Exchange Web Services (EWS), disponibles depuis Exchange Server 2007 et les versions ultérieures. Pour montrer comment gérer les règles, cet article explique comment :
- Lire les règles déjà présentes sur le serveur.
- Créer une nouvelle règle.
- Mettre à jour une règle existante.
Microsoft Exchange Server 2010 Service Pack 1 est requis pour toutes les fonctionnalités décrites dans cet article.
Lire les règles
Pour obtenir toutes les règles du serveur Exchange :
- Connectez-vous à un serveur Exchange en utilisant la classe IEWSClient.
- Appelez la méthode IEWSClient.getInboxRules() pour obtenir toutes les règles.
- Dans une boucle foreach, parcourez toutes les règles et affichez les propriétés de la règle comme les conditions, les actions et le nom.
L’extrait de code suivant montre comment lire les règles.
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());
}
}
Création d’une nouvelle règle
Pour créer une nouvelle règle sur le serveur Exchange, suivez les étapes suivantes :
- Connectez-vous à un serveur Exchange en utilisant la classe IEWSClient.
- Créez une nouvelle instance de la classe InboxRule et définissez les propriétés obligatoires suivantes :
- Nom d’affichage
- Conditions
- Actions
- Appelez la méthode IEWSClient.createInboxRule() pour créer la règle.
L’extrait de code suivant montre comment créer une nouvelle règle.
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);
Mise à jour d’une règle
Pour mettre à jour une règle sur le serveur Exchange :
- Connectez-vous à un serveur Exchange en utilisant la classe IEWSClient.
- Appelez la méthode IEWSClient.getInboxRules() pour obtenir toutes les règles.
- Dans une boucle foreach, parcourez toutes les règles et obtenez celle que vous souhaitez modifier en faisant correspondre le DisplayName dans une condition.
- Mettre à jour les propriétés de la règle
- Appelez la méthode IEWSClient.updateInboxRule() pour mettre à jour la règle.
L’extrait de code suivant montre comment mettre à jour une règle.
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);
}
}