"Outlook inbox" depuis une page HTML 1

“Outlook inbox” depuis une page HTML

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 + "&nbsp;";

}

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.

A propos Martial Auroy

Je suis formateur sur les offres de la plateforme Microsoft 365 et sur la suite Office de Microsoft : Excel, OneDrive, Planner, PowerPoint, SharePoint, Teams, Word, Yammer et tous leurs amis. Connaitre les outils est essentiel pour se concentrer à ses objectifs. Je vous propose des plans de formations adaptés à vos besoins pour votre succès. Pourquoi moi ? Mais parce que j’ai une expérience du monde professionnel, de la paye à la production industrielle. Ainsi je peux vous former à utiliser les outils de Microsoft Office 365 adaptés à la réalité de votre besoin. Et puis, je suis instructeur pour LinkedIn, certifié qualité CNEFOP et validé dans Datadock.

Je vous propose également...

Supprimer une boite partagée avec outlook 2010 ou 2013 (environnement Exchange) 2

Supprimer une boite partagée avec outlook 2010 ou 2013 (environnement Exchange)

Après avoir fait une délégation de boîte aux lettres sur le serveur Exchange avec Accès …

Publier signature Outlook avec les informations AD (suite) 3

Publier signature Outlook avec les informations AD (suite)

Vous avez été nombreux à visiter la page "Signature Outlook avec informations de l'AD" de synergeek. Cet article était basé sur le script original du site Nalex. Avec le passage à Office 2013, et à Windows 8 ou 8.1, il y a eu besoin d'apporter quelques modifications au script que j'avais publié comme aux modèles de signatures.

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *