[Tutoriel] Windev Windev Mobile piloter ses mails sur pc et pda (part 3)

Suite des deux premiers tutoriaux (ici et ici) dans lesquels nous avons vu comment interroger le serveur, récupérer et présenter ses mails en texte brut ou html, nous allons maintenant nous tourner vers la récupération ciblée de ces mails et la suppression de ceux-ci sur le serveur. Ce tutoriel se terminera sur quelques présentations de fonctions liées à la gestion des mails et qui n’ont pas encore été abordées. (lire la suite) Récupération des mails selon la date de réception Note : Pas de véritable moyen trouvé pour testé si le message a été lu ou non directement côté serveur, nous allons donc trier les mails et définir leur récupération en fonction de la date de réception. Dans un premier temps, nous allons interroger le serveur sur le nombre de mail présent afin de povoir définir un “Pour x = 1 à Nombre de messages présents”. Dans ce traitement, nous allons récupérer la date de réception de chaque message et la comparer à la date du jour. Dans cet exemple la base de comparaison est le mois en cours. Nous devrons donc formater la date de réception afin de la rendre utilisable, la date renvoyée par le serveur étant de type : “TUE, 5 Feb 2008″. Voici le code commenté : //Verification de la date du jour dateverif = DateVersChaîne(DateDuJour()) dateverif = Milieu(dateverif,4,2) //Check du nombre de mail présent sur le serveur nombremessage = EmailNbMessage(User) //boucle traitement des mail presents sur le serveur POUR i = 1 A nombremessage //lecture des entetes EmailLitEntêtePremier(User) //Recuperation de la date de réception et formatage dans une date exploitable date = Email.DateRéception date = Milieu(date,5,12) date = SansEspace(date) date = Remplace(date,” “,” ») SI Taille(date) <> 9 ALORS date = “0″+date FIN datefinal = Gauche(date,2) + “/” + Milieu(date,3,3) + “/” + Droite(date,4) date = datefinal //Appel de la procedure dateremplace() qui va transformer les abréviations de mois en chiffes dateremplace() //passage de la date formatée vers une variable date dateformatee = ChaîneVersDate(date) date = DateVersChaîne(dateformatee) date = Milieu(date,4,2) //info(date,dateverif) //test sur le mois, si le mois de réception égale le mois en cours on récupère le message SI date = dateverif ALORS EmailLitMessage(User,i) SI Email.EnDehors <> Vrai ALORS TableAjouteLigne(TMail,Email.Expéditeur,Email.Sujet,Email.TexteBrut,i) SINON FIN SINON FIN FIN Dans ce code nous faisons appelà une procédure DateRemplace() dont voici le détail : PROCEDURE dateremplace() date = Remplace(date,”jan”,”01″,SansCasse) date = Remplace(date,”feb”,”02″,SansCasse) date = Remplace(date,”mar”,”03″,SansCasse) date = Remplace(date,”apr”,”04″,SansCasse) date = Remplace(date,”may”,”05″,SansCasse) date = Remplace(date,”jun”,”06″,SansCasse) date = Remplace(date,”jul”,”07″,SansCasse) date = Remplace(date,”aug”,”08″,SansCasse) date = Remplace(date,”sep”,”09″,SansCasse) date = Remplace(date,”oct”,”10″,SansCasse) date = Remplace(date,”nov”,”11″,SansCasse) date = Remplace(date,”dec”,”12″,SansCasse) Ce code est bien sûr à adapter à vos besoins. Suppression des mails sur le serveur La suppression des mails sur le serveur s’effectue à partir d’une unique commande. EmailSupprimeMessage(Utilisateur, numero du message) Le paramètre numéro du message est optionnel, s’il n’est pas indiqué le dernier message lu sera supprimé. Si vous afficher les mails récupérés dans une table, il suffira de récupérer l’id du mail et de le placer dans celle-ci dans une colonne cachée par exemple. Cela permet de laisser à l’utilisateur le choix de conserver ou de supprimer le message qu’il lit du serveur. Cela donnerait un bouron “Suppression du Message” contenant un code de ce type : ide,mailid est une entier ide = TableSelect(TMail) mailid = Tmail.mailid[ide]EmailSupprimeMessage(User,mailid) TableSupprime(TMail,ide) FenRepeint(Fmail) Dans ce cas précis cependant, le passage du paramètre n’est pas obligatoire non plus puisque le bouton de suppression du message doit supprimer le dernier mail lu. Ce paramètre est bien plus utile dans le cas de programmation de batch de suppression en grand nombre de mail. Et les pièces jointes ? Il est possible de connaître les détails des pièces jointes d’un message en lisant la structure de l’email avec les commandes suivantes : Email.Attache pour connaître le nom des fichiers attachés, utile pour bloquer la sauvegarde de certaines extensions Email.IdentifiantAttache pour connaître les “id” des pièces jointes Email.NbAttache pour connaître le nombre de fichiers attachés Après quoi vous pourrez sauvegarder ces pièces jointes sur disque : EmailSauveFichierAttaché(Nom du fichier attaché, chemin+nom du fichier sauvegardé) Le nom du fichier attaché est récupéré avec Email.Attache. Le deuxième paramètre est le chemin complet du répertoire de sauvegarde des pièces jointes complété par le nom que vous souhaitez donné au fichier sauvegardé. Il est préférable d’insérer ce traitement dans une boucle de type “Pour x = 1 à Email.NbAttache” afin d’être certain de sauvegarder la pièce désirée. L’envoi de mail Recevoir des mails et parvenir à les traiter, filter, présenter, supprimer c’est bien mais pouvoir en envoyer c’est utile aussi. Présentation des champs utilisés pour une meilleure compréhension du code qui va suivre : L_destinataire est une liste d’adresse mail authorisée S_Sujet est un champ de saisie de l’objet du message S_Message est un champ de saisie du corps du message Les variables utilisées sont soit décrites dans le code soit déjà utilisées dans les précédents tutoriaux, voici le code : i est un entier variabledestinataire est une chaîne // Envoi d’un e-mail par le protocole SMTP SI EmailOuvreSessionSMTP(User,Password, Smtp) = Vrai ALORS // Procédure permettant d’initialiser la structure e-mail SI L_Destinataire..Occurrence = 0 ALORS Erreur(”Vous n’avez pas sélectionné de destinataires”) RepriseSaisie(S_Sujet) SINON SI S_Sujet = “” ALORS RepriseSaisie(S_Sujet) Erreur(”Vous n’avez pas précisé l’objet du message”) SINON SI S_Message = “” ALORS Erreur(”Vous n’avez pas spécifié de message”) RepriseSaisie(S_Message) SINON SI L_Destinataire..Occurrence = 1 ALORS variabledestinataire = L_Destinataire[1] SINON //Insertion de tous les destinataires séparés par un point virgule POUR i = 1 A L_Destinataire..Occurrence ListeSelect(L_Destinataire,i) variabledestinataire = variabledestinataire + L_Destinataire[i]+ “,” FIN FIN Email.Destinataire = variabledestinataire Email.Expéditeur = User Email.Sujet = S_Sujet Email.Message = S_Message Email.NbDestinataire = L_Destinataire..Occurrence // Envoie le mail SI EmailEnvoieMessage(User) = Faux ALORS Erreur(”EmMailEnvoieMessage a échoué ‘” + … ErreurInfo(errMessage) + “‘”) SINON Info(”EmMailEnvoieMessage a réussi”) FIN FIN FIN Et après ? Ce tutoriel n’est pas exhaustif, vous aurez peut-êrte envie de gérer les priorités des mails, d’insérer plus de filtres, d’optimiser les traitements ou les aborder différement. Pour rappel, le but de ce tutoriel est de pouvoir gérer ses mails tout en les laissant sur votre serveur mail. Intialement, cette solution a été étudiée afin d’intégrer une application mail légère, multi-utilisateurs, sans toucher au registre sur des pda. Ces tutoriaux peuvent servir également dans le cas d’un développement sur pc à la manière d’un Gmail Notifier par exemple.

Laisser une réponse