Je Office 365 mailbox beheren met de EWS API

Vanuit een .NET applicatie worden aardig wat mails verstuurd hier en daar. Denk bijvoorbeeld aan de account bevestiging mails of die voor wachtwoord vergeten. Daarnaast zijn er ook nog de mails die specifiek zijn voor een applicatie. Al deze mails kunnen prima verstuurd worden met de standaard mailfunctionaliteit vanuit het .NET Framework. Maar wanneer je mails wilt ophalen of wanneer je een directe reactie op een andere mail wilt sturen, wordt de situatie al wat ingewikkelder. Met behulp van de Microsoft EWS API gaan deze gevallen een stuk gemakkelijker. Je logt namelijk in met de gegevens van je Office 365 omgeving en hiermee kan je je applicatie toegang geven tot het beheren van je mailbox. Dit betekent onder meer dat er mails verstuurd, ontvangen en verplaatst kunnen worden.

Opzet

Begin met het opzetten van een C# Console App en installeer een NuGEt Package genaamd ‘Microsoft.Exchange.WebServices’, Hiermee kan je gebruik maken van de API. Ten eerste moet het service object aangemaakt worden, deze is namelijk nodig voor zowel het versturen als ontvangen van mails. Geef in de parameters aan om welke versie van Exchange het gaat. In de properties moeten vervolgens de credentials en de url worden aangegeven.

[code language=”csharp”]
static void Main(string[] args)
{
ExchangeService service = new ExchangeService(ExchangeVersion.Exchange2013_SP1)
{
Credentials = new WebCredentials(ConfigurationManager.AppSettings[“username”], ConfigurationManager.AppSettings[“password”]),
Url = new Uri(“https://outlook.office365.com/EWS/Exchange.asmx”)
};
}
[/dm_code_snippet]

Mails ophalen

Om mails te kunnen ophalen moet er een functie worden aangemaakt die het service object in de parameters accepteert. Het eerste wat in de functie gedaan moet worden is het ophalen van de folders. Vervolgens kan hier de folder uitgehaald worden die moet worden uitgelezen. Als je wil dat de mail na het ophalen wordt verplaatst naar een andere folder kan deze hier ook gedefinieerd worden. Het enige wat er dan nog moet gebeuren is het maken van een loop die alle mails in de folder omzet naar bruikbare EmailMessage objecten. Nu kunnen de objecten uitgelezen worden en kun je deze met de waarden gebruiken binnen je applicatie.
Naast de mail gebruiken kan je er ook een directe reply op maken die binnen dezelfde e-mail conversation binnen zal komen. Dit ResponseMessage object kan je zelf ook nog aanpassen voordat je het verstuurd. Tot slot is het aan te raden de e-mail te verplaatsen naar een andere folder, als je dit niet doet zal de mail de volgende keer namelijk weer worden opgehaald. Een alternatief hiervoor zal zijn een filter te maken bij het ophalen van de mails om alleen de ongelezen mails op te halen.

[code language=”csharp”]
public static void GetMail(ExchangeService service)
{
FindFoldersResults folders = service.FindFolders(WellKnownFolderName.Root, new FolderView(int.MaxValue)
{
PropertySet = new PropertySet(BasePropertySet.IdOnly)
{
FolderSchema.DisplayName
},
Traversal = FolderTraversal.Deep
});

Folder readFolder = folders.First(f => f.DisplayName == “Inbox”);
Folder destinationFolder = folders.First(f => f.DisplayName == “Archive”);

foreach (EmailMessage email in readFolder.FindItems(new ItemView(int.MaxValue)))
{
ResponseMessage reply = email.CreateReply(false); ;
reply.Body = “Bedankt voor je mailtje, deze is in goede orde ontvangen!”;
reply.Send();

email.Move(destinationFolder.Id);
}
}
[/dm_code_snippet]

Mails versturen

Nog belangrijker dan het ophalen zal het versturen van mails zijn. Gelukkig is dat zelfs nog makkelijker dan het ophalen. Ook voor het versturen is het aan te raden om een functie te maken die het service object in de parameters accepteert. Het enige wat er nu moet gebeuren is het aanmaken van een EmailMessage object met daarin een aantal parameters zoals de ontvanger, onderwerpregel en inhoud. Vervolgens kan de Send methode van het object worden aangeroepen.

[code language=”csharp”]
public static void SendMail(ExchangeService service)
{
EmailMessage message = new EmailMessage(service)
{
ToRecipients = { “blog@refine-it.nl” },
Subject = “Onderwerp”,
Body = “Inhoud”
};

message.Send();
}
[/dm_code_snippet]

Naast het ontvangen en versturen van e-mails beschikt de EWS API over nog veel meer functionaliteit. Denk hierbij bijvoorbeeld aan het organiseren van je mailbox door verschillende eigenschappen van mails binnen je mailbox naar wens aan te passen. Een ander interessant onderdeel van de API is het organiseren van je agenda, taken en afspraken. Mogelijkheden genoeg dus! 🙂

Meer weten over onze oplossingen?

Onze consultants hebben veel ervaring binnen een grote verscheidenheid aan branches.
Eens verder brainstormen over de mogelijkheden voor jouw organisatie?

Maak kennis met onze specialist Arnoud van der Heiden.

Geef een reactie

Het e-mailadres wordt niet gepubliceerd. Vereiste velden zijn gemarkeerd met *

Fill out this field
Fill out this field
Geef een geldig e-mailadres op.

Categorieën

Categorieën

Vragen?

Onze specialisten geven graag antwoord op uw vragen!