Envoi d'un seul email avec FileSystemWatcher (Aide svp)

specialgirl Messages postés 5 Date d'inscription mercredi 2 février 2005 Statut Membre Dernière intervention 1 septembre 2010 - 31 août 2010 à 12:53
specialgirl Messages postés 5 Date d'inscription mercredi 2 février 2005 Statut Membre Dernière intervention 1 septembre 2010 - 1 sept. 2010 à 14:01
[size=200]Bonjour tout le monde
j'éspère que vous allez bien
Je suis entrain de developper une application Console qui permet le suivi ou le monitoring d'un dossier à l'aide de FileSystemWatcher ,
et qui envoie à chaque fois un mail a chaque changement fait que ca soit la creation,la suppression, le renommage ou la modification
mon programme arrive à faire le suivi et envoyer un email à chaque modification
mon souci c'est que je veux envoyer un seul et un seul mail qui regroupe toutes les modifications (comme journal de modifications) faites sur ce dossier et non pas à chaque modification

j'ai cherché sur le forum ,je n'ai pas trouvé une reponse à ma question ,je ne sais pas comment procéder pour envoyer un seul email/size


voila mon code c'est vrai qu'il n'est pas optimisé mais ce n'est que le debut



using System;
using System.Collections;
using System.Collections.Generic;
using System.Text;
using System.ComponentModel;
using System.Data;
using System.Diagnostics;
using System.ServiceProcess;
using System.IO;
using System.Net.Mail;
using System.Configuration;
using System.Threading;
//using System.Collections.Specialized;


namespace watcher
{
    class Program
    {

        static string mailCc = null;


        static string mailFrom = null;
        static string message = "";
        static bool includeSubdirectories;

        [IODescriptionAttribute("FSW_IncludeSubdirectories")]
        public bool IncludeSubdirectories
        {
            get { return includeSubdirectories; }
            set
            {
                includeSubdirectories = value;

            }
        }


        static void Main(string[] args)
        {

            Mail mymail = new Mail();

            FileSystemWatcher watcher = new FileSystemWatcher();
            watcher.IncludeSubdirectories = true;
            Console.WriteLine("...");
            watcher.Path = Path.GetDirectoryName(@"C:\watcher");


            watcher.Filter = "*.*";
            watcher.NotifyFilter = NotifyFilters.LastWrite | NotifyFilters.FileName | NotifyFilters.Size | NotifyFilters.DirectoryName;


            watcher.Deleted += new System.IO.FileSystemEventHandler(OnDelete);
            watcher.Renamed += new System.IO.RenamedEventHandler(OnRenamed);
            watcher.Changed += new System.IO.FileSystemEventHandler(OnChanged);
            watcher.Created += new System.IO.FileSystemEventHandler(OnCreate);



            watcher.EnableRaisingEvents = true;

            Console.ReadLine();
        }


      public static void OnChanged (object source, FileSystemEventArgs e)
        {
            //appel de la classe mail
            Mail mymail = new Mail();
            // appel de la liste des adresses mail destinataires dans le fichier app.config
            Hashtable section = (Hashtable)ConfigurationManager.GetSection("GroupmailTo/mailTo");

            String[] mailTo = new string[section.Count];//tableau des @mails
            String[] mailCc = new string[section.Count];
            int i = 0;
            // reccuperer la liste de toutes les adresses mails
            foreach (DictionaryEntry d in section)
            {
                mailTo[i] = d.Value.ToString();
                i++;
            }
            mailFrom = ConfigurationManager.AppSettings["mailFrom"];
            myobjet = "Fichier modifié ";
            message = "File : " + e.Name + e.ChangeType;

            mymail.Send(mailTo, mailFrom, mailCc, myobjet, message, "");
        }

        public static void OnRenamed(object source, RenamedEventArgs e)
        {
            //appel de la classe mail
            Mail mymail = new Mail();
            // appel de la liste des adresses mail destinataires dans le fichier app.config
            Hashtable section = (Hashtable)ConfigurationManager.GetSection("GroupmailTo/mailTo");

            String[] mailTo = new string[section.Count];//tableau des @mails
            String[] mailCc = new string[section.Count];
            int i = 0;
            // reccuperer la liste de toutes les adresses mails
            foreach (DictionaryEntry d in section)
            {
                mailTo[i] = d.Value.ToString();
                i++;
            }
            mailFrom = ConfigurationManager.AppSettings["mailFrom"];
            message = "File renamed from : " + e.OldName + " to " + e.Name ;
            myobjet = "Fichier renommé ";
            mymail.Send(mailTo, mailFrom, mailCc, myobjet, message, "");
        }

        public static void OnDelete(object source, FileSystemEventArgs e)
        {
            //appel de la classe mail
            Mail mymail = new Mail();
            // appel de la liste des adresses mail destinataires dans le fichier app.config
            Hashtable section = (Hashtable)ConfigurationManager.GetSection("GroupmailTo/mailTo");

            String[] mailTo = new string[section.Count];//tableau des @mails
            String[] mailCc = new string[section.Count];
            int i = 0;
            // reccuperer la liste de toutes les adresses mails
            foreach (DictionaryEntry d in section)
            {
                mailTo[i] = d.Value.ToString();
                i++;
            }
            mailFrom = ConfigurationManager.AppSettings["mailFrom"];
            myobjet = "Fichier supprimé";
            message = " File : " + e.Name + " Deleted ";
            mymail.Send(mailTo, mailFrom, mailCc, myobjet, message, "");

        }
        public static void OnCreate(object source, FileSystemEventArgs e)
        {
            //appel de la classe mail
            Mail mymail = new Mail();
            // appel de la liste des adresses mail destinataires dans le fichier app.config
            Hashtable section = (Hashtable)ConfigurationManager.GetSection("GroupmailTo/mailTo");

            String[] mailTo = new string[section.Count];//tableau des @mails
            String[] mailCc = new string[section.Count];
            int i = 0;
            // reccuperer la liste de toutes les adresses mails
            foreach (DictionaryEntry d in section)
            {
                mailTo[i] = d.Value.ToString(); 
                i++;
            }
            mailFrom = ConfigurationManager.AppSettings["mailFrom"];
                        myobjet = "Fichier crée";
            message = " File : " + e.Name + " was  Created " ;
            //envoi du mail
            mymail.Send(mailTo, mailFrom, mailCc, myobjet, message, "");
        }



    }
}


Merci d'avnce
sp-girl

1 réponse

specialgirl Messages postés 5 Date d'inscription mercredi 2 février 2005 Statut Membre Dernière intervention 1 septembre 2010
1 sept. 2010 à 14:01
sp-girl
0
Rejoignez-nous