Werken met regels op Exchange Server
Regels beheren
Aspose.Email for Java kan gebruikt worden om de regels op Exchange Server te beheren met de EWSClient klasse. Deze klasse gebruikt Exchange Web Services (EWS), die beschikbaar zijn in Exchange Server 2007 en latere releases. Om te laten zien hoe regels beheerd worden, legt dit artikel uit hoe:
- Lees de regels die al op de server staan.
- Maak een nieuwe regel.
- Update een bestaande regel.
Microsoft Exchange Server 2010 Service Pack 1 is vereist voor alle functies die in dit artikel worden beschreven.
Regels lezen
Om alle regels van de Exchange‑server op te halen:
- Maak verbinding met een Exchange‑server via de IEWSClient‑klasse.
- Roep de IEWSClient.getInboxRules()-methode aan om alle regels op te halen.
- In een foreach‑lus doorloop je alle regels en toon je de regel‑eigenschappen zoals condities, acties en naam.
Het volgende code‑fragment laat zien hoe je regels leest.
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());
}
}
Nieuwe regel aanmaken
Om een nieuwe regel op de Exchange‑server te maken, voer je de volgende stappen uit:
- Maak verbinding met een Exchange‑server via de IEWSClient‑klasse.
- Maak een nieuw exemplaar van de InboxRule‑klasse aan en stel de volgende verplichte eigenschappen in:
- Weergavenaam
- Condities
- Acties
- Roep de IEWSClient.createInboxRule()-methode aan om de regel te maken.
Het volgende code‑fragment laat zien hoe je een nieuwe regel maakt.
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);
Regel bijwerken
Om een regel op de Exchange‑server bij te werken:
- Maak verbinding met een Exchange‑server via de IEWSClient‑klasse.
- Roep de IEWSClient.getInboxRules()-methode aan om alle regels op te halen.
- In een foreach‑lus doorloop je alle regels en krijg je de regel die je wilt wijzigen door te zoeken naar de DisplayName in een voorwaarde.
- Werk de regel‑eigenschappen bij
- Roep de IEWSClient.updateInboxRule()-methode aan om de regel bij te werken.
Het volgende code‑fragment laat zien hoe je een regel bijwerkt.
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);
}
}