Está en la página 1de 2

/* Estas cinco lineas van en el public class */ Microsoft.Office.Interop.Outloo.Application outlooApp = new Microsoft. Office.Interop.Outloo.

Application(); MAPIFolder mails = null; NameSpace outlooNS = null; DirectoryInfo Dir; DataTable dt = new DataTable(); /* Estas dos lineas van en el main del form */ outlooNS = outlooApp.GetNamespace("MAPI"); mails = outlooNS.GetDefaultFolder(OlDefaultFolders.olFolderInbox); /* Esta es la funcin para recolectar los correos */ void Mail() { string name = ""; // nombre del proveedor dt.Rows.Clear(); foreach (object obj in mails.Items) { MailItem item = obj as MailItem; // objeto MailItem. if (item != null && item.UnRead) { name = MailExist(item.SenderEmailAddress); //MailExist es un metodo String que regresa el nombre del proveedor segun el correo electronico. if (name != "") // si encontro el correo en la base de datos hace lo siguiente. { dt.Rows.Add(item.ReceivedTime.ToString(), name, item.Sen derEmailAddress, item.Subject);//Almacena en un datatable. for (int i = 0; i < item.Attachments.Count; i++) //Verif ica si hay adjuntos. { ArrayList typeFile = new ArrayList(item.Attachments[ i + 1].FileName.Split('.')); //Divide el nombre del archivo antes y despues del punto. if (typeFile[1].ToString() == "xml" || typeFile[1].T oString() == "pdf") //En este caso solo acepta xml y pdf. { /* Crea una ruta para guardar el archivo, Meses es un meto do String que regresa el nombre del mes enviandole el numero del mismo */ string path = Settings.Default.Path + "\\" + ite m.ReceivedTime.Year + "\\" + name + "\\" + Meses(item.ReceivedTime.Month); Dir = new DirectoryInfo(path);//Se asigna la rut a al objeto DirectoryInfo. if (!Dir.Exists)//verifica si la ruta ya fue cre ada. { Dir.Create();//si no fue creada la crea. } item.Attachments[i + 1].SaveAsFile(path + "\\" +

item.Attachments[i + 1].FileName);//Se guarda el archivo en la ruta. } item.UnRead = false; //se marca el correo como leido . } } else {

Unnownemail(item.SenderEmailAddress);//si no se encontr o el correo en la base de datos se almacena en un arreglo } } dataGrid1.DataContext = dt;//Aqui muestra los correos de los cua les descargo archivos. En winforms seria dataGrid1.DataSource = dt;, esto es WPF . } EvaluateMail();//Esta funcion envia un correo cada 12 hrs con los co rreos que no se encontraron en la base de datos. }