Après avoir vu comment interroger le serveur sur le nombre de mail en attente, il est temps pour nous de récupérer et de présenter les mails. Pour ce faire nous allons créer une fenêtre et tenter d’organiser tout cela au mieux. Assez difficile vu la taille des écrans des pda’s. Nous allons nous inspirer de l’interface mail livrée avec Windows et l’adapter à nos besoins. Le but est d’utiliser les fonctions d’ouverture de session mail de windev afin de pouvoir gérer plusieurs utilisateurs sans devoir tous les créer à la main dans pocket outlook. Dans le cas d’un déploiement via un patch applicatif, cela permet de ne pas avoir à créer un .reg pour chaque utilisateur. En plus de notre fenêtre d’interface mail, nous ajouterons une ou deux tables à l’analyse. La première contiendra la liste des utilisateurs avec leurs infos de mail et un champs qui fera la jonction avec la table d’identification du programme (pour cet exemple). Ainsi, une fois l’utilisateur authentifié dans l’application, ce dernier recevra ses mails sans le besoin d’autres informations. Si l’appareil mobile change de main, le reparamétrage de l’appareil ne sera donc pas nécessaire. La seconde table (facultative) permettra la sauvegarde des mails en local. Elle est facultative (brièvement décrite ici car non utilisée) car dès lors de son utilisation, les mails se retrouveraient en exclusivité sur un seul appareil mobile et notre gestion par table des utilisateurs serait inutile. Entrons dans le vif du sujet, le code : (lisez la suite) Pour les raisons de place évoquées ci-dessus, nous allons tout de même utiliser une seule et même fenêtre pour piloter tout ça. Cette fenêtre sera pilotée par un champs combo pré-rempli avec trois options : Réception, Envoi et Quitter. A chaque changement d’état du combo, un code sous forme de procédure locale s’exécutera et la gestion d’affichage de champs utiles sera exécutée. Nous allons voir ici les procédures d’envoi et de réception de mail ainsi que la manière d’afficher ces derniers. Il existe certainement plusieurs autres manières d’arriver à ce but. Réception des mails NomUser, Destinataire, Sujet, Texte est une chaîne nombremessage, i est un entier // Gestion de la Combo box, ici l’option 1 correspond à la réception de mail Cchoix = 1 indice = Cchoix SI indice = 1 ALORS //initialisation de la fenêtre version réception //Groupe1_Recept et Groupe2_Envoi sont un groupe de champs Groupe1_Recept..Visible = Vrai LCorps..Visible = Faux Groupe2_Envoi..Visible = Faux FenRepeint(Fmail) //Test User = “user@xxx.xx” Password = “xxxxxxx” Pop = “pop.xxx.xx” Smtp = “smtp.xxx.x” //Ouverture de session mail SI EmailOuvreSession(User, Password, Pop, Smtp)= Vrai ALORS NomUser = User SINON NomUser = “” Erreur(”Impossible d’établir la connexion”) FIN //Check du nombre de mail présent sur le serveur et Ajout dans une table des informations des mailsprésents sur le serveur : Expéditeur, Objet, Corps en texte brut, i ; l’identifiant du message nombremessage = EmailNbMessage(User) POUR i = 1 A nombremessage EmailLitMessage(User,i) SI Email.EnDehors <> Vrai ALORS TableAjouteLigne(TMail,Email.Expéditeur,Email.Sujet,Email.TexteBrut,i) SINON FIN FIN FIN Affichage des mails Nous allons utiliser le champs ActiveX afin de pouvoir afficher les mails au format HTML et un champ de saisie en consultation simple pour les mails en texte brut. maligne est un entier maligne = TableSelect(TMail) hFic est un entier hauteur est un entier Repert_Temp est une chaîne = “c:SDMMC Disktemp” CID est une chaîne I est un entier EmailLitMessage(User,TMail.Id[maligne]) //test si le mail contient du HTML SI Email.HTML <> “” ALORS ActiveX1..Visible = Vrai LCorps..Visible = Faux // Pour chaque fichier attaché POUR I =1 A Email.NbAttache // Copier le fichier dans un répertoire temporaire EmailSauveFichierAttaché(Email.Attache[I],Repert_Temp+Email.Attache[I]) // Récupérer l’identifiant du fichier attaché dans le mail CID =”cid:” + Email.IdentifiantAttache[I] // Remplacer les références au fichier attaché par le nom réel du fichier Email.HTML =Remplace(Email.HTML, CID, “file:” + Repert_Temp + Email.Attache[I]) FIN // Afficher le contenu HTML dans un Browser WEB // Créer un fichier temporaire contenant le HTML NomFic est une chaîne =Repert_Temp+ “temp.htm” hFic = fCrée(NomFic) hFic = fOuvre(NomFic) fEcrit(hFic, Email.HTML, Taille(Email.HTML)) fFerme(hFic) // Fournir le fichier HTML temporaire au browser // navigateur_WEB est un champ ActiveX “Microsoft Web Browser” ActiveX1>>Navigate(NomFic) SINON ActiveX1..Visible = Faux LCorps..Visible = Vrai fSauveTexte(Repert_Temp + “temp.txt”,Email.Message) LCorps = fChargeTexte(Repert_Temp + “temp.txt”) FIN Envoi des mails et différenciation des mails lus et non lus dans la troisième partie à venir… Pour une utilisation optimale des codes fournis, pensez à copier coller les zones bleutées dans Windev et utilisez l’indentation automatique sur le code copié (CTRL+R).