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"
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
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); } }
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é.
Partager