Voici une expérience : Comment lister ses emails reçu dans outlook dans une page HTML ?
Quelques pré-requis sont nécessaires:
- Outlook doit être installé sur le poste qui demande la page html.
- Du coté de l’IE, il faut changer les paramètres à partir des options/Sécurité/sites de confiance.
- Il faut mettre l’adresse du site qui héberge cette page dans la liste des serveurs « de confiance »,
- Dans la sécurité de cette zone de confiance, il faut accepter la création d’ActiveX.
Pour ma part, j’ai utilisé Outlook 2007 et l’IE9. Le serveur Web est ISS sur un 2003R2. Mais cela importe peu.
Cet exemple liste les emails qui se trouvent dans la boite « inbox » de l’outlook de celui qui lit la page HTML. C’est donc lié à la session de l’utilisateur.
Ce code simpliste permet de prouver le fonctionnement. Ensuite, je vous invite à le mettre mieux en forme et, évidement, à l’améliorer par d’autres propriétés come l’adresse de l’émetteur ou son nom .
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <title></title> </head> <script language="jscript" type="text/jscript"> function ReadInbox(){ var mHTML; mHTML = ""; mHTML = mHTML + "<table style="width:100%:border:0px;">"; try { var oOA = new ActiveXObject("Outlook.Application"); //get reference to inbox var oMAPI = oOA.GetNamespace("MAPI");// of currentUser; var oFldrInbox = oMAPI.GetDefaultFolder(6); // 6 for default inbox, 4 Outbox // header of table mHTML = mHTML + "<tr><td colspan="3">"; mHTML = mHTML + "<img src="images/inbox.png" style="width:36px;height:36px;border:0px" /><span style="font-weight:bold;">" + oFldrInbox.Items.Count + " éléments dont " + oFldrInbox.UnReadItemCount + " non lus" + "</span>"; mHTML = mHTML + "</td></tr>"; // For all items in the inbox... for (var i = 1; i<=(oFldrInbox.Items.Count); i++) { mHTML = mHTML + "<tr>"; // for the envelope icon mHTML = mHTML + "<td>"; if (oFldrInbox.Items(i).UnRead) { mHTML = mHTML + "<img src="images/email.png" style="width:18px;height:18px;border:0px" />"; } else { mHTML = mHTML + "<img src="images/email_readed.png" style="width:18px;height:18px;border:0px" />"; } // add attachement icon mHTML = mHTML + "<td>"; if (oFldrInbox.Items(i).Attachments.Count>0) { mHTML = mHTML + "<img src="images/attachment.png" style="width:18px;height:18px;border:0px" />"; } else { mHTML = mHTML + " "; } mHTML = mHTML + "</td>"; // add the subject mHTML = mHTML + "<td>"; mHTML = mHTML + oFldrInbox.Items(i).Subject; mHTML = mHTML + "</td>"; // close the line mHTML = mHTML + "</tr>"; } } catch (e) { alert ("erreur "+e.message); } //close all object oFldrInbox = null; oMAPI = null; oOA = null; //Puts results in the page mHTML = mHTML + "</table>"; oInbox.innerHTML = mHTML; } </script> <body onload="ReadInbox();" > <div style="width:100%;height:100%;font-family:Arial;font-size:small" id="oInbox"><img src="images/wait.gif" /></div> </body> </html>
- En premier cette page HTML, charge le « body » et appelle la fonction « ReadInbox ».
- Cette fonction va construire dans une chaine mHTML le code qui sera mis dans une <div> de la page. Cette <div> est définie en 100% de son contenant mais ce n’est bien entendu pas obligatoire.
- On construit une table qui recevra pour chaque ligne un élément de « l’inbox » de Outlook.
- L’objet « oOA » reçoit l’objet ActiveX. Si ça coince ici à l’exécution, c’est soit les paramètres de votre explorateur qui empêchent la création d’ActiveX, soit vous n’avez pas Outlook installé sur le poste.
- L’objet « oMAPI » nous permet de nous connecter à la messagerie de Outlook et « oFldrInbox » d’aller à la boite de réception ; 6 pour « l’inbox », 4 pour « outbox ».
- Ensuite, c’est facile, boucle dans chaque email et construction des éléments. Les images sont là pour avoir un résultat plus sympa, et vous trouverez d’innombrables choix depuis internet.
- La propriété « Unread » permet de savoir s’il a été lu.
- « Attachments.Count » permet de connaitre le nombre de pièces jointes.
- « Subject » pour reprendre le sujet du message.
Pour les autres propriétés, notons :
- « SenderName » pour le nom de l’expéditeur,
- « SenderEmailAddress » pour l’adresse email de l’expéditeur,
- « Importance » pour le niveau d’importance du message,
- « body » pour le contenu du message,
Utilisez la méthode « SaveAsFile » de l’objet Attachement.item(n) si vous voulez enregistrer les pièces jointes.
Bon code.