public void GetMail()
        {
            bool   isHtml = false;
            string c_name;
            int    team;

            Pop3Client client = new Pop3Client();

            client.Connect("pop.gmail.com", 995, true); //For SSL
            client.Authenticate("recent:[email protected]", "Edgemo2018",
                                AuthenticationMethod.UsernameAndPassword);

            int messageCount = client.GetMessageCount();

            for (int i = messageCount; i > 0; i--)
            {
                messageId = client.GetMessage(i).Headers.MessageId;
                OpenPop.Mime.Message msg = client.GetMessage(i);

                if (msg.FindFirstPlainTextVersion() == null)
                {
                    this.mailContent = msg.MessagePart.GetBodyAsText();
                    //Hvis teksten er i html, så står der true i isHtml collonnen.
                    //Bruges til at bestemme hvordan teksten skal håndteres.
                    isHtml = true;
                }
                else
                {
                    OpenPop.Mime.MessagePart plainTextPart = msg.FindFirstPlainTextVersion();
                    this.mailContent = plainTextPart.GetBodyAsText();
                    isHtml           = false;
                }
                //Sikrer at datetime er dansk tidszone


                timeStamp = (msg.Headers.DateSent).ToLocalTime();

                subjectLine = msg.Headers.Subject.ToString();
                mailAddress = msg.Headers.From.MailAddress.Address.ToString();

                if (MessageIdExists(messageId))
                {
                    break;
                }

                ////SE HER
                //Hvis vi kan nå at lave en FORM til denne, så er koden lavet. Læs nedenfor (try/catch eller andet for at fange fejlindtastning)
                if (!db.CustomerMailExists(mailAddress))
                {
                    int c_id = db.NewCustomer("Ukendt", mailAddress, 2);
                }

                ticketId = TicketIdInSubjectLine(subjectLine);
                db.InsertCorrespondence(ticketId, mailContent, timeStamp, subjectLine, mailAddress, isHtml, messageId);
                Console.WriteLine("Correspondence is added to ticket: " + ticketId);
            }
            Console.WriteLine("Alle nye mails er hermed registreret");
        }
Exemple #2
0
        private void startReceive()
        {
            QuerysDb querysDb = new QuerysDb();
            var      emails   = querysDb.SelectEmails();

            for (int key = 0; key < emails.Rows.Count; key++)
            {
                if (!backList.Contains(emails.Rows[key][1].ToString()))
                {
                    if (!string.IsNullOrWhiteSpace(emails.Rows[key][1].ToString()))
                    {
                        mail_grid.Rows.Add(false, emails.Rows[key][3].ToString(), emails.Rows[key][4].ToString(), emails.Rows[key][5].ToString(), emails.Rows[key][6].ToString());
                        backList.Add(emails.Rows[key][1].ToString());
                    }
                }
            }

            Thread thread = new Thread(() => {
                try
                {
                    var client = new Pop3Client();
                    client.Connect("pop.mail.yahoo.com", 995, true);
                    client.Authenticate(Toemail, Topass);
                    var count = client.GetMessageCount();
                    OpenPop.Mime.Message message = client.GetMessage(count);
                    // var mailbody = ASCIIEncoding.ASCII.GetString(message.RawMessage);

                    StringBuilder builder = new StringBuilder();

                    OpenPop.Mime.MessagePart plainText = message.FindFirstPlainTextVersion();
                    if (plainText != null)
                    {
                        CreateDb.ExecuteSqlCommand($"INSERT INTO box_mail (dateId, mail_from, subject, body, tipo) VALUES('{message.Headers.Date.Trim()}','{message.Headers.From}','{message.Headers.Subject.Trim()}','{plainText.GetBodyAsText()}', 'text')");
                    }
                    else
                    {
                        // Might include a part holding html instead
                        OpenPop.Mime.MessagePart html = message.FindFirstHtmlVersion();
                        if (html != null)
                        {
                            CreateDb.ExecuteSqlCommand($"INSERT INTO box_mail (dateId, mail_from, subject, body, tipo) VALUES('{message.Headers.Date.Trim()}','{message.Headers.From}','{message.Headers.Subject.Trim()}','{html.GetBodyAsText()}', 'html')");
                        }
                    }
                }
                catch (Exception ex)
                {
                    MessageBox.Show(ex.Message);
                    // corpo_email.AppendText(ex.Message + "\r\n");
                }
            })
            {
                IsBackground = true
            };

            thread.Start();
        }
Exemple #3
0
        private void startReceive()
        {
            var client = new Pop3Client();

            client.Connect("pop.mail.yahoo.com", 995, true);
            client.Authenticate(Toemail, Topass);
            var count = client.GetMessageCount();

            OpenPop.Mime.Message message = client.GetMessage(count);
            // var mailbody = ASCIIEncoding.ASCII.GetString(message.RawMessage);
            OpenPop.Mime.MessagePart body = message.FindFirstPlainTextVersion();

            GetBody = body.GetBodyAsText();
        }
        /* Function to retrive mails from pop3 and insert the data into the database. */
        public void InsertMail(Message mail)
        {
            /* Variable containing the SQLite commands needed to insert the data into the database */
            Debug.WriteLine("Insert mail to DB");
            string sql = "INSERT INTO mailInbox (sender,recipient,bc,cc,subject,message,datetime) " +
                         "VALUES (@sender,@recipient,@bc,@cc,@subject,@message,@datetime)";

            /* Variables created to contain data from the pop3/"real" mail. */
            string   message;
            string   sender    = mail.Headers.From.ToString();
            string   recipient = String.Join(",", mail.Headers.To);
            string   bc        = String.Join(",", mail.Headers.Bcc);
            string   cc        = String.Join(",", mail.Headers.Cc);
            string   subject   = mail.Headers.Subject;
            DateTime datetime  = mail.Headers.DateSent;

            Debug.WriteLine(datetime);

            /* check if the mail message if multilined. */
            if (!mail.MessagePart.IsMultiPart)
            {
                message = mail.MessagePart.GetBodyAsText();
            }
            else
            {
                OpenPop.Mime.MessagePart plainText = mail.FindFirstPlainTextVersion();
                message = plainText.GetBodyAsText();
            }

            /* Debug output */
            //Debug.WriteLine("Sender: " + sender);
            //Debug.WriteLine("Recipient: " + recipient);
            //Debug.WriteLine("Bc: " + bc);
            //Debug.WriteLine("Cc: " + cc);
            //Debug.WriteLine("Subject: " + subject);
            //Debug.WriteLine("Message: " + message);

            /* SQLite Commands to insert the data from the variables into the database */
            SQLiteCommand cmd = new SQLiteCommand(sql, DbConn);

            cmd.Parameters.AddWithValue("@sender", sender);
            cmd.Parameters.AddWithValue("@recipient", recipient);
            cmd.Parameters.AddWithValue("@bc", bc);
            cmd.Parameters.AddWithValue("@cc", cc);
            cmd.Parameters.AddWithValue("@subject", subject);
            cmd.Parameters.AddWithValue("@message", message);
            cmd.Parameters.AddWithValue("@datetime", datetime);
            //cmd.Parameters.AddWithValue("@attachment", mail.MessagePart.FileName);
            cmd.ExecuteNonQuery();
        }
 protected OpenPop.Mime.MessagePart BuscarParte(string Id, OpenPop.Mime.MessagePart M)
 {
     if (M.ContentId == Id)
     {
         return(M);
     }
     if (M.MessageParts != null)
     {
         foreach (OpenPop.Mime.MessagePart Parte in M.MessageParts)
         {
             OpenPop.Mime.MessagePart Result = BuscarParte(Id, Parte);
             if (Result != null)
             {
                 return(Result);
             }
         }
     }
     return(null);
 }
Exemple #6
0
        public void InsertMail(Message mail)
        {
            Debug.WriteLine("Insert mail to DB");
            string sql = "INSERT INTO mailInbox (sender,recipient,bc,cc,subject,message) " +
                         "VALUES (@sender,@recipient,@bc,@cc,@subject,@message)";

            string message;
            string sender    = mail.Headers.From.ToString();
            string recipient = String.Join(",", mail.Headers.To);
            string bc        = String.Join(",", mail.Headers.Bcc);
            string cc        = String.Join(",", mail.Headers.Cc);
            string subject   = mail.Headers.Subject;

            if (!mail.MessagePart.IsMultiPart)
            {
                message = mail.MessagePart.GetBodyAsText();
            }
            else
            {
                OpenPop.Mime.MessagePart plainText = mail.FindFirstPlainTextVersion();
                message = plainText.GetBodyAsText();
            }

            /* Debug output */
            //Debug.WriteLine("Sender: " + sender);
            //Debug.WriteLine("Recipient: " + recipient);
            //Debug.WriteLine("Bc: " + bc);
            //Debug.WriteLine("Cc: " + cc);
            //Debug.WriteLine("Subject: " + subject);
            //Debug.WriteLine("Message: " + message);

            SQLiteCommand cmd = new SQLiteCommand(sql, DbConn);

            cmd.CommandText = sql;
            cmd.Parameters.AddWithValue("@sender", sender);
            cmd.Parameters.AddWithValue("@recipient", recipient);
            cmd.Parameters.AddWithValue("@bc", bc);
            cmd.Parameters.AddWithValue("@cc", cc);
            cmd.Parameters.AddWithValue("@subject", subject);
            cmd.Parameters.AddWithValue("@message", message);
            //cmd.Parameters.AddWithValue("@attachment", mail.MessagePart.FileName);
            cmd.ExecuteNonQuery();
        }
        protected String Guardar(OpenPop.Mime.MessagePart Parte, String Id)
        {
            String Dir = @"/Temp/Correo" + Id + "/";
            String Ruta2;

            try
            {
                Ruta2 = Dir + General.ArreglarNombre(Parte.ContentDisposition.FileName);
            }
            catch
            {
                Ruta2 = Dir + "Temp" + Parte.ContentId;
            }
            if (!Directory.Exists(MapPath(Dir)))
            {
                Directory.CreateDirectory(MapPath(Dir));
            }
            Parte.Save(new FileInfo(MapPath(Ruta2)));
            return(Ruta2);
        }
Exemple #8
0
        public void InsertMsgInto(List <OpenPop.Mime.Message> list)
        {
            string           dbConnString = @"Data Source=db.sqlite; Version=3;"; // Creating the connection string with filepath to the DB
            SQLiteConnection sqliteCon    = new SQLiteConnection(dbConnString);   // Creating new connection string instance.

            sqliteCon.Open();                                                     // Open database

            SQLiteTransaction sqlTrans;

            SQLiteCommand comInsert = new SQLiteCommand("INSERT OR IGNORE INTO messages (msgID, msgSender, msgSubject, msgBody) VALUES (@msgID, @msgSender, @msgSubject, @msgBody)", sqliteCon);

            foreach (OpenPop.Mime.Message message in list)
            {
                if (message.Headers.MessageId != null)
                {
                    comInsert.Parameters.AddWithValue("@msgID", message.Headers.MessageId);
                    comInsert.Parameters.AddWithValue("@msgSender", message.Headers.From.Address);
                    comInsert.Parameters.AddWithValue("@msgSubject", message.Headers.Subject);
                    if (!message.MessagePart.IsMultiPart)
                    {
                        comInsert.Parameters.AddWithValue("@msgBody", message.MessagePart.GetBodyAsText());
                    }
                    else
                    {
                        OpenPop.Mime.MessagePart plaintext = message.FindFirstPlainTextVersion();
                        comInsert.Parameters.AddWithValue("@msgBody", plaintext.GetBodyAsText());
                    }

                    sqlTrans = sqliteCon.BeginTransaction();
                    int result = comInsert.ExecuteNonQuery();

                    sqlTrans.Commit(); // Commit changes into the DB
                } // End if
            } // End foreach

            comInsert.Dispose();

            sqliteCon.Close();
        }
Exemple #9
0
        private void LeerConOpenPop()
        {
            String       sql;
            OleDbCommand comm;
            long         indice;
            String       carpeta;

            indice = GetLastIndice();

            //creamos el objeto
            ConnectPop3 oCP3 = new ConnectPop3();

            //invocamos el metodo para obtener mensajes
            List <OpenPop.Mime.Message> lstMensajes = oCP3.getMensajes();

            //recorremos y mostramos el asunto
            foreach (OpenPop.Mime.Message oMensaje in lstMensajes)
            {
                indice++;
                carpeta = formateaCarpeta(indice);

                try
                {
                    sql  = "";
                    sql += "INSERT INTO Correos (MensajeId, Fecha, EnviadoPor, EnviadoA, Asunto, Cuerpo, Carpeta)";
                    sql += " VALUES ('" + oMensaje.Headers.MessageId + "',";
                    sql += "  #" + Convert.ToDateTime(oMensaje.Headers.Date).ToString("MM/dd/yyyy") + "#,";
                    sql += "  '" + oMensaje.Headers.From.ToString().Replace("\"", "") + "',";
                    sql += "  '" + GetTo(oMensaje) + "',";
                    sql += "  '" + oMensaje.Headers.Subject + "',";
                    if (oMensaje != null)
                    {
                        OpenPop.Mime.MessagePart messagePart = oMensaje.MessagePart.MessageParts[1];

                        string test = messagePart.BodyEncoding.GetString(messagePart.Body);
                        // Raw mensaje
                        var mailbody = ASCIIEncoding.ASCII.GetString(oMensaje.RawMessage);

                        //// Si es UTF-8
                        if (mailbody.Contains("utf-8"))
                        {
                            //var encodedStringAsBytes = System.Convert.FromBase64String(mailbody);
                            //var rawMessage = System.Text.Encoding.UTF8.GetString(mailbody);
                        }
                        sql += "  '" + mailbody + "',";
                    }
                    else
                    {
                        sql += "  '',";
                    }
                    sql += "  '" + carpeta + "')";
                    SimpleLogger.WriteLog(sql);
                    comm = new OleDbCommand(sql, con);
                    comm.ExecuteNonQuery();
                }
                catch (Exception ex)
                {
                    SimpleLogger.WriteLog(ex.Message);
                }
            }

            MessageBox.Show("OK");
        }
        protected void PrepararCorreo()
        {
            try
            {
                using (CobranzasDataContext db = new CobranzasDataContext())
                {
                    idOperador.Value = Request["idOperador"];//Sesion.idOperador.ToString();
                    int id   = Convert.ToInt32(Request["idCorreo"]);
                    int Tipo = Convert.ToInt32(Request["Tipo"]);
                    idCorreo.Value = id.ToString();
                    Entidades.Correos Correo = db.Correos.Single(x => x.idCorreo == id);
                    try
                    {
                        List <Entidades.Correos> CorreoAnterior;
                        List <Entidades.Correos> CorreoSiguiente;
                        if (Tipo == 1)
                        {
                            CorreoSiguiente = db.Correos.Where(x => x.idOperador == Correo.idOperador && x.FechaCreacion < Correo.FechaCreacion && x.TipoEspecial == null && !x.Correos_Personas.Any() && x.RutaEml != null).OrderByDescending(x => x.FechaCreacion).Take(1).ToList();
                            CorreoAnterior  = db.Correos.Where(x => x.idOperador == Correo.idOperador && x.FechaCreacion > Correo.FechaCreacion && x.TipoEspecial == null && !x.Correos_Personas.Any() && x.RutaEml != null).OrderBy(x => x.FechaCreacion).Take(1).ToList();
                        }
                        else if (Tipo == 2)
                        {
                            CorreoSiguiente = db.Correos.Where(x => x.idOperador == Correo.idOperador && x.FechaCreacion < Correo.FechaCreacion && x.Correos_Personas.Any() && x.RutaEml != null && !x.Leido).OrderByDescending(x => x.FechaCreacion).Take(1).ToList();
                            CorreoAnterior  = db.Correos.Where(x => x.idOperador == Correo.idOperador && x.FechaCreacion > Correo.FechaCreacion && x.Correos_Personas.Any() && x.RutaEml != null && !x.Leido).OrderBy(x => x.FechaCreacion).Take(1).ToList();
                        }
                        else
                        {
                            CorreoSiguiente = new List <Entidades.Correos>();
                            CorreoAnterior  = new List <Entidades.Correos>();
                        }

                        if (CorreoSiguiente.Count == 0)
                        {
                            lnkSiguiente.Visible = false;
                        }
                        else
                        {
                            lnkSiguiente.HRef = "ctrlCorreo.aspx?idCorreo=" + CorreoSiguiente.First().idCorreo + "&idOperador=" + idOperador.Value + "&Tipo=" + Tipo;
                        }
                        if (CorreoAnterior.Count == 0)
                        {
                            lnkAnterior.Visible = false;
                        }
                        else
                        {
                            lnkAnterior.HRef = "ctrlCorreo.aspx?idCorreo=" + CorreoAnterior.First().idCorreo + "&idOperador=" + idOperador.Value + "&Tipo=" + Tipo;
                        }
                    }
                    catch { }
                    Correo.Leido = true;
                    db.SubmitChanges();
                    lblAsunto.Text                   = Correo.Asunto;
                    lblDestinatarios.Text            = Server.HtmlEncode(Correo.Destinatarios);
                    lblDestinatariosCopia.Text       = Server.HtmlEncode(Correo.DestinatariosCopia);
                    lblDestinatariosCopiaOculta.Text = Server.HtmlEncode(Correo.DestinatariosCopiaOculta);
                    lblFecha.Text = Correo.FechaCreacion.ToString("dd/MM/yyyy HH:mm:ss tt");
                    String Mensaje = "";
                    //Boolean isHTML = true;
                    if (Correo.Mensaje != null)
                    {
                        Mensaje = Correo.Mensaje;
                    }
                    if (Correo.RutaEml != null)
                    {
                        List <String>            NoAdjuntos = new List <string>();
                        String                   Ruta       = db.Parametros.Single(x => x.Clave == "RutaCorreos").Valor;
                        OpenPop.Mime.Message     m          = OpenPop.Mime.Message.Load(new System.IO.FileInfo(Ruta + Correo.RutaEml + ".eml"));
                        OpenPop.Mime.MessagePart Parte      = m.FindFirstHtmlVersion();
                        if (Parte == null)
                        {
                            Parte = m.FindFirstPlainTextVersion();
                        }
                        Mensaje = Parte.GetBodyAsText();
                        //isHTML = !m.MessagePart.IsText;
                        if (Parte.ContentType.MediaType.ToLower() == "text/plain")
                        {
                            Mensaje = "<pre>" + Mensaje + "</pre>";
                        }
                        try
                        {
                            foreach (Match Match in Regex.Matches(Mensaje, "\"(cid:(\\S+))\""))
                            {
                                //Debug.Print(Match.ToString());
                                String ID = Match.Groups[2].Value;
                                NoAdjuntos.Add(ID);
                                try
                                {
                                    OpenPop.Mime.MessagePart Parte2 = BuscarParte(ID, m.MessagePart);
                                    String Ext = Parte2.FileName;
                                    try
                                    {
                                        Ext = Ext.Substring(Ext.LastIndexOf("."));
                                    }
                                    catch
                                    {
                                        Ext = "";
                                    }
                                    String Ruta2 = Guardar(Parte2, id.ToString());
                                    //Parte2.Save(new FileInfo(MapPath(Ruta2)));
                                    Mensaje = Mensaje.Replace(Match.Groups[0].Value, "\"" + Ruta2 + "\"");
                                }
                                catch { }
                            }
                            foreach (OpenPop.Mime.MessagePart Adjunto in m.FindAllAttachments())
                            {
                                if (NoAdjuntos.Contains(Adjunto.ContentId))
                                {
                                    continue;
                                }
                                String Ruta2 = Guardar(Adjunto, id.ToString());
                                lblAdjuntos.Text += String.Format(@"</span><a href=""{0}"" title=""{2}"" target=""_blank"" class=""AdjuntoSL"">{1}</a><span>", Ruta2, Adjunto.ContentDisposition.FileName ?? "Adjunto", Adjunto.ContentDescription);
                            }
                        }
                        catch { }
                    }
                    //lblAdjuntos.Text=@"</span><a href=""http://www.google.com"" target=""_blank"" class=""Adjunto"">aquí</a><span>";
                    lblRemitente.Text = Correo.Remitente;
                    try
                    {
                        String RutaCorreo = (@"/Temp/Correo" + id.ToString() + (true ? ".html" : ".txt"));
                        iframe.Attributes["src"] = RutaCorreo;
                        File.WriteAllText(MapPath(RutaCorreo), Mensaje, System.Text.Encoding.UTF8);
                    }
                    catch { }
                }
            }
            catch (Exception Ex)
            {
                Ex.Registrar();
            }
        }
        /// <summary>
        /// Metodo que descarga los correos del Servicio de correo que pertenecen a la cuenta <paramref name="pCuenta"/>.
        /// </summary>
        /// <param name="pCuenta">Cuenta de la cual se descargan los correos.</param>
        /// <returns>Retorna una lista de correos.</returns>
        public override IList <CorreoDTO> DescargarCorreos(CuentaDTO pCuenta)
        {
            Pop3Client pop = new Pop3Client();

            OpenPop.Mime.Message mensaje;
            List <CorreoDTO>     mCorreos = new List <CorreoDTO>();

            try
            {
                pop.Connect("pop.mail.yahoo.com", 995, true);
                pop.Authenticate(pCuenta.Direccion, pCuenta.Contraseña);
                int cantidadMensajes = pop.GetMessageCount();

                for (int i = cantidadMensajes; i > 0; i--)
                {
                    mensaje = pop.GetMessage(i);
                    // obtengo el texto del cuerpo del correo.
                    string cuerpo = "";
                    OpenPop.Mime.MessagePart texto = mensaje.FindFirstPlainTextVersion();
                    if (texto != null)
                    {
                        // We found some plaintext!
                        cuerpo = texto.GetBodyAsText();
                    }
                    else
                    {
                        // Might include a part holding html instead
                        OpenPop.Mime.MessagePart html = mensaje.FindFirstHtmlVersion();
                        if (html != null)
                        {
                            // We found some html!
                            cuerpo = html.GetBodyAsText();
                        }
                    }

                    string pTipoCorreo;
                    // Determina si el correo es enviado o recibido comparando la direccion de la cuenta con la direccion
                    // que aparece como direccion remitente.
                    if (mensaje.Headers.From.Address == pCuenta.Direccion)
                    {
                        pTipoCorreo = "Enviado";
                    }
                    else
                    {
                        pTipoCorreo = "Recibido";
                    }

                    // Armar el string de cuenta destino con las cuentas destinatarias.
                    string pDestino = "";
                    foreach (OpenPop.Mime.Header.RfcMailAddress mailAdres in mensaje.Headers.To)
                    {
                        pDestino = pDestino + mailAdres.Address + "; ";
                    }

                    mCorreos.Add(new CorreoDTO()
                    {
                        Fecha         = mensaje.Headers.DateSent,
                        TipoCorreo    = pTipoCorreo,
                        Texto         = cuerpo,
                        CuentaOrigen  = mensaje.Headers.From.Address,
                        CuentaDestino = pDestino,
                        Asunto        = mensaje.Headers.Subject,
                        Leido         = false,
                        ServicioId    = mensaje.Headers.MessageId
                    });
                }
            }
            catch (OpenPop.Pop3.Exceptions.InvalidLoginException exeption) // Excepcion que se lanza cuando hay un  problema con los datos del usuario y no se puede realizar el login
            {
                throw new ServicioCorreoException("No se pudo actualizar la cuenta " + pCuenta.Direccion + ". Hubo un problema en el acceso a la cuenta. Revise sus datos y vuelva a intentarlo.", exeption);
            }
            catch (OpenPop.Pop3.Exceptions.PopServerNotFoundException exeption) // Excepcion que se lanza al no poder conectarse con el servidor
            {
                throw new ServicioCorreoException("No se pudo actualizar la cuenta " + pCuenta.Direccion + ". Hubo un error de acceso al servidor. Revise su conexion o intentelo más tarde.", exeption);
            }
            catch (Exception exeption)
            {
                throw new ServicioCorreoException("No se pudo actualizar la cuenta " + pCuenta.Direccion + ". ", exeption);
            }
            return(mCorreos);
        }