Fonction de lecture et de récupération des adresses d'expéditeurs dans des fichiers outlook express enregistrés sur le disqu

Soyez le premier à donner votre avis sur cette source.

Snippet vu 11 410 fois - Téléchargée 28 fois

Contenu du snippet

FONCTION DE LECTURE ET DE RÉCUPÉRATION DES ADRESSES D'EXPÉDITEURS DANS DES FICHIERS OUTLOOK EXPRESS ENREGISTRÉS SUR LE DISQUE DUR
ce code est une fonction à implémenter dans votre code, elle est déjà incluse dans un namespace, donc vous n'avez plus qu'à la rajouter.

Source / Exemple :


namespace ProcessDirectoryNS
{
using System;
using System.IO;
using System.Collections;

//
// Classe d'enregistrement des noms d'expéditeurs contenus dans des mails.
// 
// Il est vivement conseillé de gérer les excéptions qui pourraient se produire
//
class CProcessExpMails
{

	// Récupère un nom de répertoire et parcourt, l'ensemble des fichiers
	// et sous-répertoire.
	public static void ProcessDirectory(string targetDirectory) 
	{
        string tampon="", emetteur="", mot=""; 
		SortedList expediteurs = new SortedList();
		int i0=0,i1=0,i2=0;
                			
		bool trouve, ignoreNext;

						
		// Parcourt récursif des sous-répertoires
		string [] subdirectoryEntries = Directory.GetDirectories(targetDirectory);
		foreach(string subdirectory in subdirectoryEntries)
			ProcessDirectory(subdirectory);

				
		// Parcourt des tous les fichiers
		string [] fileEntries = Directory.GetFiles(targetDirectory);
		foreach(string fileName in fileEntries)
		{
			if(fileName.EndsWith(".eml"))
			{
				i0=i1=i2=0;
				emetteur="";
	
				// Recherche et sauvegarde des expéditeurs
				FileStream mail = new FileStream(fileName, FileMode.Open, FileAccess.Read);
				StreamReader srMail = new StreamReader(mail);
					
				trouve=false;
				while(!trouve)
				{
					tampon = srMail.ReadLine();
					tampon = tampon.ToLower();
					ignoreNext=false;
					mot="";

					/* recherche de from
					// si from:
						si Received préalablement => ignorer
						sinon
							fin de boucle => trouvé = true
					   si received:
							ignorer prochain from

  • /
for (int i=0; i!= tampon.Length; i++) { if(tampon[i]==' ') { mot=tampon.Substring(0,i); tampon=tampon.Remove(0,i); if(mot.Equals("from:")) { if(ignoreNext==false) { trouve=true; break; } ignoreNext = false; } else if(mot.Equals("received:")) { ignoreNext = true; } i=0; } } } srMail.Close(); mail.Close(); // extraction de l'adresse for(int i=0; i!= tampon.Length && tampon[i]!='@' ; i++) i0=i; i0++; if( i0 < tampon.Length) { for(int i=i0; i>=0 && !(tampon[i]=='<'||tampon[i]==' '); i--) i1=i; for(int i=i0+1; i!=tampon.Length && !(tampon[i]=='>'||tampon[i]==' ') ; i++) i2=i; i2++; emetteur=tampon.Substring(i1,i2-i1); } else emetteur="inconnu"; if (expediteurs.Contains(emetteur)) { i1=(int)expediteurs[emetteur]; expediteurs[emetteur]=i1+1; } else { expediteurs[emetteur]=(int)1; } } } // sauvegarde des résultats dans un fichier FileStream file = new FileStream(targetDirectory+"//resultat.csv", FileMode.Create, FileAccess.Write); StreamWriter sw = new StreamWriter(file, System.Text.Encoding.ASCII); // parcourt de la liste ordonnée et enregistrement foreach(DictionaryEntry exp in expediteurs) { sw.Write("{0};{1}\r\n",(string)exp.Key,(int)exp.Value); } sw.Close(); file.Close(); } } }

A voir également

Ajouter un commentaire Commentaires
Messages postés
13
Date d'inscription
samedi 12 novembre 2005
Statut
Membre
Dernière intervention
5 décembre 2005

je veux telecharger !! mais ya pas de ZZIIPP
Messages postés
5487
Date d'inscription
dimanche 4 août 2002
Statut
Modérateur
Dernière intervention
20 juin 2013
54
Ouais, et pour le parcours récursif des répertoires, on peut faire (si jamais) en .NET 2 :

string[] files = Directory.GetFiles(myPath, myPattern, SearchOption.AllDirectories);
Messages postés
4936
Date d'inscription
lundi 17 février 2003
Statut
Modérateur
Dernière intervention
14 février 2014
36
a la place de ca :
string [] fileEntries = Directory.GetFiles(targetDirectory);
foreach(string fileName in fileEntries)
{
if(fileName.EndsWith(".eml"))

met plutot :
string [] fileEntries = Directory.GetFiles(targetDirectory, "*.eml');
foreach(string fileName in fileEntries)
{

sinon, bon code...

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.