Bonjour à tous,

Je travaille sur un projet qui m'a lentement pousser vers le c# que je ne connais pas du tout...
La finalité de mon projet est de réceptionner un mail avec une pièce jointe, de copier le fichier (.csv) dans un répertoire définit, avant de le traité pour l'importer dans ma base de donnée.
Je vous rassure tout de suite ce qui est traitement et importation fonctionne déjà avec package SSIS sur SQL Server 2005.

Mon problème est de me connecté à une boite mail (Import@machin.eu) qui tourne sur Exchange 2007, de lire les emails dont le sujet est "Import" et de prendre la pièce jointe (une par mail). Sachant que dans 99% des cas il n'y aura qu'un mail par jour.

J'ai trouvé quelques sujet traitant de cette problématique mais malheureusement étant néophyte en C# , j'arrive tout juste à me connecté à la boite pour le moment.

Poste de Saten qui traite du sujet

Tuto de Louis-Guillaume MORAND "Envoi et réception de mails"

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
public class ManagEmail
{
 
    public static void Main()
    {
        email();
    }
 
    //[Microsoft.SqlServer.Server.SqlProcedure]
 
 
    public static void email()
    {   
 
        TcpClient ServMail = new TcpClient("mail.servmail.lan", 110); // 110 est le port par défaut pour les serveurs POP3	
        Console.Out.WriteLine("Email connexion ->" + ServMail);
 
        // initialisation du Stream
        NetworkStream monStream = ServMail.GetStream();
 
        // création du streamreader et initialisation du Stream (monStream)
        StreamReader sr = new StreamReader(monStream);
 
        // Préparation des commandes USER et PASS avec le nom d'utilisateur et le mot de pass 
        String Loggin = "user Import\r\n";
        String Password = "pass truc\r\n";
 
        // Envoi de la commande au serveur
        Byte[] bCommande = System.Text.ASCIIEncoding.ASCII.GetBytes(Loggin);
        monStream.Write(bCommande, 0, bCommande.Length);
 
        // Envoi de la commande au serveur
        bCommande = System.Text.ASCIIEncoding.ASCII.GetBytes(Password);
        monStream.Write(bCommande, 0, bCommande.Length);
 
 
    }
}
Si mon code parait bizarre c'est que le C# doit se coder en Objet tout en restant dans UN fichier .cs pour obtenir un seul .dll qui sera encapsuler dans une Assembly CLR... c'est d'un symple merci Crosoft

Mais bon si on compile pour avoir un .exe qui fait le traitement d'une traite, c'est le même car je peut toujours faire un batch avec une tâche planifié sur le serveur même si c'est pas très classe comme méthode...

J'espère que vous pourrez m'aider car je galère...

Bien à vous,

Hervé.