/// <summary> /// Creates a copy of the current message in another folder /// </summary> /// <param name="folder">The folder where the message should be copied to</param> /// <param name="downloadCopy">If <code>true</code>, the copy of the message will be downloaded to target folder</param> /// <returns><code>true</code> if the message could be copied</returns> public bool CopyTo(Folder folder, bool downloadCopy = false) { if (folder == null) { throw new ArgumentNullException("folder"); } if (Folder.ReadOnly) { Folder.Select(); } IList <string> data = new List <string>(); if ( !_client.SendAndReceive(string.Format(ImapCommands.Copy, UId, folder.Path), ref data, this)) { return(false); } var m = Expressions.CopyUIdRex.Match(data.FirstOrDefault() ?? ""); if (m.Success) { folder.Search("UID " + m.Groups[3].Value); } return(true); }
/// <summary> /// Metodo que obtiene descarga los archivos adjuntos de /// los correos no leido y los marca como leido de la /// bandeja de entrada de Gmail /// </summary> /// <returns></returns> public void bandejaEntradaGmail() { while (!detenerHilo) { try { //Se obtiene informacion de cuenta de correo ManteUdoCorreos manteUdo = new ManteUdoCorreos(); Correo correo = manteUdo.Consultar(); string clave = correo.Clave, usuario = correo.Cuenta; ImapClient cliente = new ImapClient(); //Se conecta con el servidor if (cliente.Connect(Mensaje.cliGmail, true)) { //Se loguea con el usuario y la clave cliente.Login(usuario, clave); //Se obtiene la carpeta de bandeja de entrada ImapX.Collections.FolderCollection folder = cliente.Folders; ImapX.Folder buzonEntrada = cliente.Folders.Inbox; //Se obtiene los mensajes no leidos ImapX.Message[] mensajes = buzonEntrada.Search("UNSEEN", ImapX.Enums.MessageFetchMode.Full); //Se recorren la lista de mensajes obtenidos foreach (ImapX.Message mensaje in mensajes) { //Se obtienen los archivos adjuntos foreach (var archivo in mensaje.Attachments) { //Se comprueba que sea un archivo xml if (ValidarXmlSobre(archivo.FileName)) { mensaje.Seen = true; //Se descargan los archivos adjuntos archivo.Download(); archivo.Save(RutasCarpetas.RutaCarpetaBandejaEntrada); string desde = mensaje.From.ToString(); //Se guarda en la tabla de sobres Recibidos respuestaSobre.GenerarXML(RutasCarpetas.RutaCarpetaBandejaEntrada, archivo.FileName, desde); } //Se comprueba que sea un ACK else if (ValidarXmlACKSobre(archivo.FileName)) { archivo.Download(); archivo.Save(RutasCarpetas.RutaCarpetaBandejaEntrada); mensaje.Seen = true; //Obtiene datos del sobre de un ACK xml SobreTransito sobreTransito = ObtenerSobreTransito(archivo.FileName, mensaje.From.ToString()); //Guarda los datos en la tabla TFEST(Sobre en transito) ManteUdoSobreTransito manteSobreTransito = new ManteUdoSobreTransito(); manteSobreTransito.Almacenar(sobreTransito); } //else if (ValidarXmlACKCFE(archivo.FileName)) //{ // archivo.Save(RutasCarpetas.RutaCarpetaAcuseRecibidoCertificado); // mensaje.Seen = true; // RespuestaCertificados respuestaCFE = new RespuestaCertificados(); // respuestaCFE.ProcesarRespuesta(archivo.FileName, CFE.ESTipoReceptor.Receptor); //} //else //{ // archivo.Save(RutasCarpetas.RutaCarpetaConsultaEstado); // mensaje.Seen = true; // RespuestaConsultaCFE respuestaConsultaCfe = new RespuestaConsultaCFE(); // SobreTransito sobreTransito = respuestaConsultaCfe.ValidarContenidoConsulta(archivo.FileName); // if (sobreTransito != null) // { // respuestaConsultaCfe.ObtenerEstadoCFE(sobreTransito.Token, sobreTransito.IdReceptor, mensaje.From.ToString(), archivo.FileName); // } //} } } //Se cierra sesion cliente.Logout(); //Se desconecta del servidor cliente.Disconnect(); //Se libera el objeto cliente.Dispose(); } } catch (Exception) { //SAPbouiCOM.Framework.Application.SBO_Application.MessageBox("Mail/BandejaEntradaGmail/Error: " + ex.ToString()); } finally { Thread.Sleep(30000); } } }