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"); }
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(); }
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); }
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); }
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(); }
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); }