Envoi d'un seul email avec FileSystemWatcher (Aide svp)
specialgirl
Messages postés5Date d'inscriptionmercredi 2 février 2005StatutMembreDernière intervention 1 septembre 2010
-
31 août 2010 à 12:53
specialgirl
Messages postés5Date d'inscriptionmercredi 2 février 2005StatutMembreDerniè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, "");
}
}
}