Dans le formulaire de lecture du message, je souhaite afficher sur une carte avec une épingle sur l'adresse du lieu indiqué. Pour cela, nous allons utiliser la méthode la plus simple qui consiste à afficher un iframe dans la page présentée par le formulaire read.aspx. (Exemple disponible sur
Afficher un iframe
le site de Microsoft).
Cet iframe, comme la plupart des services de Bing Maps savent positionner des épingles ou afficher des chemins en se basant sur les coordonnées latitude et longitudes mais pas directement à partir de l’adresse. Bing Maps offre pour cela un webservice permettant de transformer une adresse en coordonnées latitude et longitude pouvant être exploitée ultérieurement.
Nous avons donc pour notre exemple la possibilité de calculer les coordonnées longitude et latitude à l’ouverture du message et ce, à chaque fois que le message sera ouvert ou de stocker les coordonnés du point dans le message lors de sa création. Cette deuxième option présente aussi des avantages au niveau de la conception des pages.
En effet, dans les pages ASPX que nous écrivons, le code qui s’exécute au niveau du serveur tourne dans le contexte de sécurité du pool applicatif d’OWA, c’est à dire « MSExchangeOWAAppPool » qui possède les droits de « LocalSystem » au niveau du serveur CAS. Il est donc impossible d’accéder à des ressources extérieures au système en tournant dans ce contexte de sécurité. Le code appelant le web service de Bing Maps doit donc tourner dans le contexte de sécurité du client, c’est-à-dire une fois que le rendu de la page a été produit au niveau du serveur. Or dans le formulaire de lecture, l’iframe étant préparé au niveau du serveur et il ne peut pas obtenir les coordonnées correspondant à l’adresse dans ses propriétés.
L’approche que j’ai choisie est donc d’insérer les coordonnées latitude et longitude avant l’envoi du message. Le bouton « Geolocalisation » appelle un javascript utilisant les services REST de Bing Maps pour effectuer cette géolocalisation. Les coordonnées sont ensuite ajoutées au corps du message pour des raisons de simplification de l’exemple.
Le formulaire de lecture Read.aspx va appeler les webservices d’Exchange sur le même principe que pour la création du message : impersonation, affichage des champs à partir du contenu du message ouvert.
Le point important à retenir dans cette étape est la façon dont on identifie le message à ouvrir. Lors de l’ouverture du message, OWA appelle le fichier read.aspx comme cela a été spécifié dans le fichier registry.xml et lui passe plusieurs paramètres dont l’identifiant de message. Cette identifiant de message correspond à celui de OWA qui est différent de celui à utiliser avec les webservices d’Exchange. On utilise ce morceau de code pour effectuer la conversion :
AlternateId objAltID = new AlternateId();
objAltID.Format = IdFormat.StoreId;
objAltID.Mailbox = « email@domaine.com »;
objAltID.UniqueId = Request.QueryString[« id »];
AlternateIdBase objAltIDBase = exchange.ConvertId(objAltID, IdFormat.EwsId);
AlternateId AltIDResp = (AlternateId)objAltIDBase;
String EWSID = AltIDResp.UniqueId;
Le reste de la page de lecture consiste à décortiquer le corps du message et afficher les bons champs au bon endroit.
L’iframe de Bing Maps est appelé dans un javascript dans le corps du message avec le code suivant :
Response.Write(« < iframe width=\ »400\ » height=\ »300\ » frameborder=\ »0\ » scrolling=\ »no\ » marginheight=\ »0\ » marginwidth=\ »0\ » src=\ »http://dev.virtualearth.net/embeddedMap/v1/silverlight/road?zoomLevel=10¢er= » + geoloc + « &pushpins= » + geoloc + « \ »/> »);
La variable geoloc étant renseignée lors de la décortication du corps du message après l’appel aux web services d’Exchange.
La page de résultat donne au final ce résultat : voir figure 2.
Une fois que l’on est content avec les formulaires écrit, il reste à rendre visible aux utilisateurs le formulaire de création de nouveau message.
Téléchargez cette ressource
Plan de sécurité Microsoft 365
Les attaquants savent comment prendre le contrôle de votre tenant Microsoft 365, et vous, savez-vous comment le reprendre en main ?
Les articles les plus consultés
Les plus consultés sur iTPro.fr
- Crypto Crime 2026 : États et cybercriminels convergent vers une industrialisation des infrastructures
- IA & pilotage de portefeuille de projets : accélérer la décision sans en perdre le contrôle
- Analyse Patch Tuesday Juin 2026
- La bataille de la 6G se gagne dans la donnée en temps réel
Articles les + lus
Windows 11 : Microsoft généralise le point-in-time restore pour accélérer la remise en service des PC
Computex 2026 : 5 signaux forts à retenir
La chaîne d’approvisionnement, point de rupture récurent du SI
Microsoft Build 2026 : contre-offensive des modèles maison face à OpenAI et Anthropic
Rhea1 : SiPearl allume le CPU européen le plus ambitieux pour le HPC et l’IA souveraine
À la une de la chaîne Tech
- Windows 11 : Microsoft généralise le point-in-time restore pour accélérer la remise en service des PC
- Computex 2026 : 5 signaux forts à retenir
- La chaîne d’approvisionnement, point de rupture récurent du SI
- Microsoft Build 2026 : contre-offensive des modèles maison face à OpenAI et Anthropic
- Rhea1 : SiPearl allume le CPU européen le plus ambitieux pour le HPC et l’IA souveraine
