Beispiel #1
0
        /// <summary>
        /// Method is moving item from one to another folder.
        /// </summary>
        /// <param name="item">Item to move.</param>
        /// <param name="destinationFolder">Destination folder.</param>
        /// <param name="moveOperation">Move operation (Copy or Move).</param>
        internal void MoveItem(Item item, Folder destinationFolder, MoveOperation moveOperation)
        {
            //Item itemToMove = Item.Bind(ewsSession, item.Id);

            switch (moveOperation)
            {
                case MoveOperation.Copy:
                    item.Copy(destinationFolder.Id);
                    break;

                case MoveOperation.Move:
                    item.Move(destinationFolder.Id);
                    break;
            }
        }
        private bool Procesar(Item item)
        {
            bool respuesta = false;
            try
            {
                item.Load();//cargamos el resto del mensaje.
                MessageBody messageBody = item.Body;//obtenemos el Body del mensaje

                //DeleteMode.HardDelete Eliminamos completamente el item.
                //DeleteMode.MoveToDeletedItems Movemos el item a la carpeta de eliminados
                //DeleteMode.SoftDelete Depende de ExchangeVersion, pero principalmente permite la recuperacion del item despues de eliminado.

                if (item.HasAttachments)//si tiene adjuntos
                    ProcesarAdjuntos(item);
                else
                                if (item.Subject.ToLower().Contains("eliminar") || messageBody.Text.ToLower().Contains("eliminar")) // Revisamos si el asunto o en el body contiene la palabra "eliminar"
                {
                    item.Delete(DeleteMode.HardDelete);//Eliminamos completamente el item.
                    respuesta = true;
                    Trace.TraceInformation("Item Eliminado.");
                }
                else if (item.Subject.ToLower().Contains("mover") || messageBody.Text.ToLower().Contains("mover")) // Revisamos si el asunto o en el body contiene la palabra "mover"
                {
                    FolderId folderID = getFolderID("procesados");

                    if (folderID != null)//si encontramos la carpeta la
                    {
                        item.Move(folderID);//movemos el item.
                        respuesta = true;
                        Trace.TraceInformation("Item Movido.");
                    }
                }
                else
                {
                    item.Delete(DeleteMode.MoveToDeletedItems);//lo movemos a la papelera
                    Trace.TraceInformation("Item Movido a carpeta Eliminados");
                }

            }
            catch (Exception)
            {

            }
            return respuesta;
        }
        private void ProcesarAdjuntos(Item item)
        {
            if (item.HasAttachments)//solo si tenemos adjuntos
                //obtenemos cada uno de los adjuntos contenidos en la collection Attachments
                foreach (Attachment adjunto in item.Attachments)
                {
                    if (adjunto is FileAttachment)// si es un archivo adjunto
                    {
                        FileAttachment archivoAdjunto = adjunto as FileAttachment;

                        // Load the attachment into a file.
                        // This call results in a GetAttachment call to EWS.
                        archivoAdjunto.Load("C:\\temp\\" + archivoAdjunto.Name);

                        Trace.TraceInformation("nombre del archivo adjunto: " + archivoAdjunto.Name);
                    }
                    else // si es un item adjunto
                    {
                        ItemAttachment itemAdjunto = adjunto as ItemAttachment;

                        //cargamos el adjunto en memoria.
                        //esta llamada resulta en una llamada GetAttachment a EWS
                        itemAdjunto.Load();

                        Trace.TraceInformation("nombre del item adjunto: " + itemAdjunto.Name);
                    }
                    FolderId folderID = getFolderID("procesados");

                    if (folderID != null)//si encontramos la carpeta la
                    {
                        item.Move(folderID);//movemos el item.
                        Trace.TraceInformation("Item Movido.");
                    }
                }
        }