private void PreencheEmails(Usuario_Imap usuario_imap, string pasta, ref List <Email> emails)
        {
            Imap imap = usuario_imap.Imap;

            using (ImapConnect connection = new ImapConnect(imap.Host, imap.Porta, imap.SSL))
            {
                ImapCommand      command        = new ImapCommand(connection);
                ImapAuthenticate authentication = new ImapAuthenticate(connection, usuario_imap.Email, usuario_imap.Password);
                ImapMailbox      mailbox;

                connection.Open();
                authentication.Login();
                mailbox = command.Select(pasta);

                mailbox = command.Fetch(mailbox);
                foreach (ImapMailboxMessage m in mailbox.Messages.Reverse <ImapMailboxMessage>())
                {
                    string destinatarios = string.Empty;
                    Email  email         = new Email();

                    m.To.ToList().ForEach(a => destinatarios += a.Address + "; ");
                    email.Remetente    = m.From.Address;
                    email.Destinatario = destinatarios.Trim();
                    email.Assunto      = m.Subject;
                    email.Data_Envio   = m.Sent.ToString("dd/MM/yyyy");
                    email.Usuario_Imap = usuario_imap;

                    ImapMailboxMessage msg = command.FetchBodyStructure(m);
                    if (m.HasText)
                    {
                        msg            = command.FetchBodyPart(m, m.Text);
                        email.Mensagem = msg.BodyParts[m.Text].Data;
                    }
                    if (m.HasHTML)
                    {
                        msg = command.FetchBodyPart(m, m.HTML);
                        string   html     = msg.BodyParts[m.HTML].Data;
                        Encoding encoding = msg.BodyParts[m.HTML].Encoding;

                        if (msg.BodyParts[m.HTML].ContentEncoding == BodyPartEncoding.BASE64)
                        {
                            email.Mensagem = html.DecodeBase64(encoding);
                        }
                        else
                        {
                            email.Mensagem = html.ToUTF8(encoding);
                        }
                    }

                    emails.Add(email);
                }

                authentication.Logout();
                connection.Close();
            }
        }
Example #2
0
        // GET api/UsuarioImap/5
        public Usuario_Imap GetUsuario_Imap(int id)
        {
            Usuario_Imap usuario_imap = db.Usuario_Imap.Find(id);

            if (usuario_imap == null)
            {
                throw new HttpResponseException(Request.CreateResponse(HttpStatusCode.NotFound));
            }

            return(usuario_imap);
        }
Example #3
0
        // POST api/UsuarioImap
        public HttpResponseMessage PostUsuario_Imap(Usuario_Imap usuario_imap)
        {
            if (ModelState.IsValid)
            {
                db.Usuario_Imap.Add(usuario_imap);
                db.SaveChanges();

                HttpResponseMessage response = Request.CreateResponse(HttpStatusCode.Created, usuario_imap);
                response.Headers.Location = new Uri(Url.Link("DefaultApi", new { id = usuario_imap.Id }));
                return(response);
            }
            else
            {
                return(Request.CreateResponse(HttpStatusCode.BadRequest));
            }
        }
Example #4
0
        // DELETE api/UsuarioImap/5
        public HttpResponseMessage DeleteUsuario_Imap(int id)
        {
            Usuario_Imap usuario_imap = db.Usuario_Imap.Find(id);

            if (usuario_imap == null)
            {
                return(Request.CreateResponse(HttpStatusCode.NotFound));
            }

            db.Usuario_Imap.Remove(usuario_imap);

            try
            {
                db.SaveChanges();
            }
            catch (DbUpdateConcurrencyException)
            {
                return(Request.CreateResponse(HttpStatusCode.NotFound));
            }

            return(Request.CreateResponse(HttpStatusCode.OK, usuario_imap));
        }
Example #5
0
        // PUT api/UsuarioImap/5
        public HttpResponseMessage PutUsuario_Imap(int id, Usuario_Imap usuario_imap)
        {
            if (ModelState.IsValid && id == usuario_imap.Id)
            {
                db.Entry(usuario_imap).State = EntityState.Modified;

                try
                {
                    db.SaveChanges();
                }
                catch (DbUpdateConcurrencyException)
                {
                    return(Request.CreateResponse(HttpStatusCode.NotFound));
                }

                return(Request.CreateResponse(HttpStatusCode.OK));
            }
            else
            {
                return(Request.CreateResponse(HttpStatusCode.BadRequest));
            }
        }