Cette étape nécessite de se (re-)plonger un peu dans l'écriture de code.
La stratégie que j'ai utilisée pour notre exemple est de consommer les webservices d'Exchange 2010 SP1. C'est l'interface privilégiée pour le développement des applications autour d'Exchange et maintenant la plupart des propriétés et des actions sur les messages sont accessibles par cette interface.
Ecrire le code des formulaires utilisés
des actions sur les messages sont accessibles par cette interface.
Pour simplifier les appels ces webservices depuis les pages ASPX, j’ai installé sur le serveur Exchange les Exchange Web Services Managed API 1.1 téléchargeables sur le site de Microsoft.
Une fois ces Managed APIs installées, on peut les intégrer dans l’entête de la page new.aspx avec la ligne suivante :
<%@ Import Namespace= »Microsoft.Exchange.WebServices.Data » %>
J’ai créé une page ASPX très simple se composant de deux boutons et des trois champs dont nous allons avoir besoin pour notre formulaire. Voir figure 1.
Les champs ont respectivement les noms suivants : tbTitle, tbAddress et tbDetails.
Visual Studio génère le code HTML qui sera utilisé pour le rendu de la page lors de l’appel du formulaire.
Le bouton « Submit » appelle les webservices d’Exchange pour soumettre le contenu du formulaire et l’envoyer au destinataire.
Afin de pouvoir bénéficier des Managed API, il faut exécuter le code sur le serveur. Il faut donc mettre le code ci-dessous entre les balises suivantes indiquant que le code doit être exécuté sur le serveur : < script runat= »server »> < /script>
protected void bSubmit_Click(object sender, EventArgs e)
{
try
{
ExchangeService exchange = new ExchangeService(ExchangeVersion.Exchange2010_SP1);
//Définition de l’adresse des webservices d’Exchange
exchange.Url = new Uri(« https://mail.uc-demo.com/ews/exchange.asmx »);
exchange.Credentials = CredentialCache.DefaultNetworkCredentials;
System.Security.Principal.WindowsImpersonationContext impersonationContext;
//Impersonation de l’utilisateur connecté qui exécute le formulaire
impersonationContext = ((System.Security.Principal.WindowsIdentity)User.Identity).Impersonate();
//Création du message à proprement parler
EmailMessage message = new EmailMessage(exchange);
message.From = Request.QueryString[« ea »];
message.Subject = « ONSITEREQUEST: » + tbTitle.Text;
message.Body = « Address= » + tbAddress.Text.Replace(« \n », »
« ) + »
*
» + « Details= » + tbDetails.Text.Replace(« \n », »
« ) + »
« ;
message.ToRecipients.Add(@ »dcaro@uc-demo.com »);
//Ne pas oublier la classe pour appeler nos formulaires personnalisés
message.ItemClass = « IPM.Note.HelpTicket »;
//On envoie le message
message.SendAndSaveCopy();
//Sortie du mode d’impersonation
impersonationContext.Undo();
}
catch (Exception ex)
{
//Si on rencontre une exception, la remonter à l’utilisateur
lDiag.Text = ex.ToString();
}
}
Téléchargez cette ressource
Microsoft 365 Tenant Resilience
Face aux principales failles de résilience des tenants M365 (configurations, privilèges, sauvegarde). Découvrez une approche en 5 piliers pour durcir, segmenter et surveiller vos environnements afin de limiter l’impact des attaques. Comment prioriser vos chantiers cyber et améliorer durablement la résilience de vos tenants Microsoft 365 ?
Les articles les plus consultés
Les plus consultés sur iTPro.fr
- Pourquoi Shopify Plus s’impose dans la transformation du e-commerce B2B
- Cybersécurité 2026 : Deepfakes, IA agentique et déficit de préparation
- Quand l’innovation échappe à ses créateurs: Comment éviter l’effet Frankenstein à l’ère de l’IA
- L’IA agentique, nouveau pilier de la résilience numérique des RSSI
Articles les + lus
Confiance et curiosité : les clés pour entrer (et grandir) en tant que femme dans la tech
Portails développeurs internes : accélérer l’innovation sans alourdir les budgets
Pourquoi Shopify Plus s’impose dans la transformation du e-commerce B2B
Quand l’innovation échappe à ses créateurs: Comment éviter l’effet Frankenstein à l’ère de l’IA
Alliée ou menace ? Comment l’IA redessine le paysage cyber
À la une de la chaîne Tech
- Confiance et curiosité : les clés pour entrer (et grandir) en tant que femme dans la tech
- Portails développeurs internes : accélérer l’innovation sans alourdir les budgets
- Pourquoi Shopify Plus s’impose dans la transformation du e-commerce B2B
- Quand l’innovation échappe à ses créateurs: Comment éviter l’effet Frankenstein à l’ère de l’IA
- Alliée ou menace ? Comment l’IA redessine le paysage cyber
