static void testEmailPop() { string _popServer; int _popPort; bool _popSSL; string _popUser; string _popPassword; _popServer = ConfigurationManager.AppSettings["PopServer"]; _popPort = int.Parse(ConfigurationManager.AppSettings["PopPort"]); _popSSL = bool.Parse(ConfigurationManager.AppSettings["PopSSL"]); _popUser = ConfigurationManager.AppSettings["PopUser"]; _popPassword = ConfigurationManager.AppSettings["PopPassword"]; try { using (var popClient = new OpenPop.Pop3.Pop3Client()) { popClient.Connect(_popServer, _popPort, _popSSL); popClient.Authenticate(_popUser, _popPassword); Console.WriteLine("SUCCESS (pop client)"); popClient.Disconnect(); } } catch (Exception e) { Console.WriteLine("FAIL (pop client)"); Console.WriteLine(e.ToString()); } }
public void Disconnect() { if (client.Connected) { client.Disconnect(); } }
public void Disconnect() { if (_popClient != null) { _popClient.Disconnect(); _popClient = null; } }
internal void get() { client.Connect("pop.gmail.com", 995, true); // Connects to the pop3 server for gmail client.Authenticate("*****@*****.**", "Max1Oreo2"); // Login Credentials var count = client.GetMessageCount(); // gets the message count OpenPop.Mime.Message message = client.GetMessage(count); // Gets the message that correlates with the count variable- in this case 0 OpenPop.Mime.MessagePart plainText = message.FindFirstPlainTextVersion(); // Gets the first messsages body builder.Append(plainText.GetBodyAsText()); //Puts the email's text into a StringBuilder where it can be outputed Console.WriteLine(builder.ToString()); //Outputs the email to the console builder.Clear(); //Clears the String Builder client.Disconnect(); // Disconnects from the Pop3 Client }
public IEnumerable <MailDto> ReceiveAsync(params string[] identifiers) { using (var client = new OpenPop.Pop3.Pop3Client()) { client.Connect(this.Host, this.Port, this.EnableSsl); client.Authenticate(this.Email, this.Password.Decrypt()); var uids = client.GetMessageUids(); for (var i = 1; i <= uids.Count; i++) { var uid = uids[i - 1]; if (!identifiers.Contains(uid)) { var message = client.GetMessage(i); yield return(this.CreateMail(message, uid)); } } client.Disconnect(); } }
private static void CleanUpInbox() { OpenPop.Pop3.Pop3Client p3 = new OpenPop.Pop3.Pop3Client(); int iPort = 110; iPort = 995; bool bSSL = false; bSSL = true; string sPopHost = Saved.Code.Common.GetBMSConfigurationKeyValue("outlookhost"); string sPopUser = Saved.Code.Common.GetBMSConfigurationKeyValue("smtppopuser"); string sPopPass = Saved.Code.Common.GetBMSConfigurationKeyValue("smtppoppassword"); p3.Connect(sPopHost, iPort, bSSL, 7000, 7000, null); p3.Authenticate(sPopUser, sPopPass); int iCount = p3.GetMessageCount(); int i = 0; for (i = iCount; i > 0; i--) { try { MessageHeader h = p3.GetMessageHeaders(i); Message m = p3.GetMessage(i); OpenPop.Mime.MessagePart plainText = m.FindFirstPlainTextVersion(); OpenPop.Mime.MessagePart htmlPart = m.FindFirstHtmlVersion(); string body = ""; string myto = m.Headers.Subject; string mysentto = ""; if (myto != null) { string[] vTo = myto.Split(new string[] { "-" }, StringSplitOptions.None); if (vTo.Length > 1) { mysentto = vTo[1].Trim(); } } if (plainText != null) { body += plainText.GetBodyAsText(); } if (htmlPart != null) { body += htmlPart.GetBodyAsText(); } bool fTotaled = false; if (body.Contains("be delivered to one")) { fTotaled = true; } else if (body.Contains("hop count exceeded")) { fTotaled = true; } else if (body.Contains("A communication failure occurred")) { fTotaled = true; } else if (body.Contains("The email address you entered couldn't be found")) { fTotaled = true; } else if (body.Contains("The domain you attempted to contact")) { fTotaled = true; } else if (body.Contains("I'm afraid I wasn't able to deliver the following message")) { fTotaled = true; } else if (body.Contains("cannot be delivered")) { fTotaled = true; } else if (body.Contains("I was unable to deliver your message")) { fTotaled = true; } else if (body.Contains("Your message wasn't delivered")) { fTotaled = true; } else if (body.Contains("rejected your message to the following")) { fTotaled = true; } else if (body.Contains("Delivery to the following recipient failed permanently")) { fTotaled = true; } else if (body.Contains("This is a delivery failure notification message ")) { fTotaled = true; } else if (body.Contains("Delivery has failed to these recipients or groups")) { fTotaled = true; } else if (body.Contains("There was a temporary problem delivering your message ")) { fTotaled = true; } else if (body.Contains("The following addresses had permanent fatal errors")) { fTotaled = true; } else if (body.Contains("the receiving email server outside Office 365 reported ") || body.Contains("couldn't be delivered")) { fTotaled = true; } if (fTotaled) { string sql = "update Leads set Advertised=getdate() where email='" + mysentto + "'"; Saved.Code.Common.gData.Exec(sql); p3.DeleteMessage(i); } } catch (Exception) { } } p3.Disconnect(); }
private void LeerCorreo(object IdOperador) { Int32 idProcesoPersonal = idProceso; try { Int32 idOperador = (int)IdOperador; using (CobranzasDataContext db = new CobranzasDataContext()) { List <Entidades.CorreosFiltros> Filtros = db.CorreosFiltros./*Where(x => x.idOperador == idOperador).*/ ToList(); String Ruta = Parametro("RutaCorreos", db); Entidades.Operadores op = db.Operadores.Single(x => x.idOperador == idOperador); Log("Leyendo: " + op.Nombre, idProcesoPersonal, idOperador); String Servidor = (op.POP3Host ?? Parametro("POP3Host", db)); if (Servidor == null) { Log("Saltando, por no tener definido un servidor", idProcesoPersonal, idOperador); return; } Int32 Puerto = (op.POP3Port ?? Convert.ToInt32(Parametro("POP3Port", db))); Boolean SSL = op.POP3SSL ?? (Parametro("POP3SSL", db) == "1"); String Usuario = op.POP3Login; String Password = op.POP3Password; if (op.POP3Password == null) { Log("Saltando, por no tener contraseña", idProcesoPersonal, idOperador); return; } DateTime?UltimaFecha = op.UltimaFechaCorreoEntrante; using (OpenPop.Pop3.Pop3Client POP3 = new OpenPop.Pop3.Pop3Client())//Iniciando el servidor POP3; { POP3.Connect(Servidor, Puerto, SSL); POP3.Authenticate(Usuario, Password); int Count = POP3.GetMessageCount(); Int32 Inicio = Count; while (true) { OpenPop.Mime.Header.MessageHeader mh = POP3.GetMessageHeaders(Inicio); if (db.Correos.Any(x => x.idOperador == idOperador && x.IdPop3 == mh.MessageId)) { break; } Inicio--; if (Inicio == 0) { break; } } Inicio++; //Inicio = UltimaFecha == null ? 1 : BuscarIdPorFecha(1, Count, POP3, UltimaFecha.Value); //Inicio -= 4; //if (Inicio < 1) Inicio = 1; Log(op.Login + " Inicio:" + Inicio + ", Total:" + Count, idProcesoPersonal, idOperador); Int32 ErroresSeguidos = 0; if (Inicio > Count) { Log("No hay correos nuevos para: " + op.Login, idProcesoPersonal, idOperador); } for (int i = Inicio; i <= Count; i++)//últimos 5 correos para verificar. { if (ErroresSeguidos == 5) { Log("Abortando Lectura de " + op.Login + " Por 5 erorres consecutivos", idProcesoPersonal, idOperador); break; } try { OpenPop.Mime.Header.MessageHeader mh = POP3.GetMessageHeaders(i); /*if (UltimaFecha != null && mh.DateSent.ToLocalTime() <= UltimaFecha) * { * Log("Saltando Mensaje", idProcesoPersonal, i); * continue; * }*/ if (db.Correos.Any(x => x.idOperador == idOperador && x.IdPop3 == mh.MessageId)) { Log("Saltando Mensaje de " + op.Login + " " + i.ToString() + "/" + Count.ToString(), idProcesoPersonal, idOperador); continue; } Log("Leyendo Mensaje de " + op.Login + " " + i.ToString() + "/" + Count.ToString(), idProcesoPersonal, idOperador); OpenPop.Mime.Message m = POP3.GetMessage(i); UltimaFecha = mh.DateSent.ToLocalTime(); String idLimpio = Limpiar(mh.MessageId); String Directorio = UltimaFecha.Value.ToString("yyyyMMdd") + "\\"; String Prefijo = UltimaFecha.Value.ToString("mmss") + "_"; String RutaCompleta = Ruta + Directorio + Prefijo + idLimpio + ".eml"; Int32 idCorreoNuevo = 0; if (!File.Exists(RutaCompleta)) { Directory.CreateDirectory(Ruta + Directorio); m.Save(new FileInfo(RutaCompleta)); } Entidades.Correos Correo = new Entidades.Correos(); Correo.IdPop3 = mh.MessageId; Correo.idOperador = idOperador; Correo.Asunto = Limitar(mh.Subject, 2000); Correo.Remitente = Limitar(mh.From.Raw, 500); Correo.FechaCreacion = mh.DateSent.ToLocalTime(); Correo.Destinatarios = Limitar(String.Join(",", mh.To.Select(x => x.Raw)), 5000); Correo.DestinatariosCopia = Limitar(String.Join(",", mh.Cc.Select(x => x.Raw)), 5000); Correo.DestinatariosCopiaOculta = Limitar(String.Join(",", mh.Bcc.Select(x => x.Raw)), 5000); Correo.RutaEml = Directorio + Prefijo + idLimpio; var Personas = Filtros.Where(x => mh.From.Address.ToLower() == x.De.ToLower()).Select(x => x.idPersona); foreach (int idPersona in Personas) { Correo.Correos_Personas.Add(new Entidades.Correos_Personas() { idPersona = idPersona }); } db.Correos.InsertOnSubmit(Correo); Correo.Fecha = DateTime.Now; db.SubmitChanges(); idCorreoNuevo = Correo.idCorreo; db.Refresh(System.Data.Linq.RefreshMode.OverwriteCurrentValues, op); op.UltimaFechaCorreoEntrante = UltimaFecha; db.SubmitChanges(); Log("Leido Mensaje de " + op.Login + " " + i.ToString() + "/" + Count.ToString() + "#" + idCorreoNuevo, idProcesoPersonal, idOperador); ErroresSeguidos = 0; } catch (OpenPop.Pop3.Exceptions.InvalidLoginException Ex) { ErroresSeguidos++; Log("Error en Mensaje: IL Op: " + op.Login + "(" + i.ToString() + "/" + Count.ToString() + "), Mensaje:" + Ex.Message, idProcesoPersonal, idOperador); } catch (OpenPop.Pop3.Exceptions.InvalidUseException Ex) { ErroresSeguidos++; Log("Error en Mensaje: IU Op: " + op.Login + "(" + i.ToString() + "/" + Count.ToString() + "), Mensaje:" + Ex.Message, idProcesoPersonal, idOperador); } catch (OpenPop.Pop3.Exceptions.LoginDelayException Ex) { ErroresSeguidos++; Log("Error en Mensaje: LD Op: " + op.Login + "(" + i.ToString() + "/" + Count.ToString() + "), Mensaje:" + Ex.Message, idProcesoPersonal, idOperador); } catch (OpenPop.Pop3.Exceptions.PopServerException Ex) { ErroresSeguidos++; Log("Error en Mensaje: PS Op: " + op.Login + "(" + i.ToString() + "/" + Count.ToString() + "), Mensaje:" + Ex.Message, idProcesoPersonal, idOperador); } catch (OpenPop.Pop3.Exceptions.PopServerLockedException Ex) { ErroresSeguidos++; Log("Error en Mensaje: PSL Op: " + op.Login + "(" + i.ToString() + "/" + Count.ToString() + "), Mensaje:" + Ex.Message, idProcesoPersonal, idOperador); } catch (OpenPop.Pop3.Exceptions.PopServerNotAvailableException Ex) { ErroresSeguidos++; Log("Error en Mensaje: PSNA Op: " + op.Login + "(" + i.ToString() + "/" + Count.ToString() + "), Mensaje:" + Ex.Message, idProcesoPersonal, idOperador); } catch (OpenPop.Pop3.Exceptions.PopServerNotFoundException Ex) { ErroresSeguidos++; Log("Error en Mensaje: SNF Op: " + op.Login + "(" + i.ToString() + "/" + Count.ToString() + "), Mensaje:" + Ex.Message, idProcesoPersonal, idOperador); } catch (OpenPop.Pop3.Exceptions.PopClientException Ex) { ErroresSeguidos++; Log("Error en Mensaje: PC Op: " + op.Login + "(" + i.ToString() + "/" + Count.ToString() + "), Mensaje:" + Ex.Message, idProcesoPersonal, idOperador); } catch (Exception Ex) { ErroresSeguidos++; Log("Error en Mensaje: Op: " + op.Login + "(" + i.ToString() + "/" + Count.ToString() + "), Mensaje:" + Ex.Message, idProcesoPersonal, idOperador); } } POP3.Disconnect(); } Log("Fin Lectura: " + op.Nombre, idProcesoPersonal, idOperador); } } catch (Exception Ex) { if (Ex.Message == "Server did not accept user credentials") { try { using (CobranzasDataContext db = new CobranzasDataContext()) { db.Operadores.Single(x => x.idOperador == (Int32)IdOperador).POP3Password = null; db.SubmitChanges(); db.Avisos.InsertOnSubmit(new Entidades.Avisos { Aviso = "El servidor ha rechazado su contraseña, por favor actualice su contraseña de correo nuevamente", FechaAviso = DateTime.Now.AddMinutes(2), FechaCrea = DateTime.Now, FechaOriginal = DateTime.Now.AddMinutes(2), idOperador = (Int32)IdOperador, idOperadorCrea = 1, VecesMostrada = 0 }); db.SubmitChanges(); } } catch { } } Log("Error General: Op:" + IdOperador + ", Mensaje:" + Ex.Message, idProcesoPersonal, (int)IdOperador); } }
public static void FetchAllMessages(object sender, DoWorkEventArgs e) { // Add messages from pop3 server to message database try { // Makes a new POP3 session // POP3 does not allow to check for new mails // * facepalm * popClient.Disconnect(); popClient.Connect(currentUser.pop_hostname, currentUser.pop_port, currentUser.pop_ssl); popClient.Authenticate(currentUser.mailaddress, currentUser.password); } catch (SystemException err) { MessageBox.Show("Kunne ikke genoprette en forbindelse" + Environment.NewLine + err.Message); } // gets messagecount int messageCount = popClient.GetMessageCount(); // progress of process int progress = 0; // the progress value when it was sent to the progressbar int lastProgress = 0; for (int i = messageCount; i > 0; i--) { OpenPop.Mime.Message msg = popClient.GetMessage(i); // We don't like the fact about messageId is optional, // so we make our own messageID by a md5 of // - the sender's email // - the tick value (ticks since 1. January year 1) // - md5 of messageID (if it doesnt present then = md5 of "") // - subject of the mail string id = genMd5(string.Format("{0}_{1}_{2}_{3}", msg.Headers.From.MailAddress.Address, msg.Headers.DateSent.Ticks.ToString(), genMd5(msg.Headers.MessageId), msg.Headers.Subject)); string from = msg.Headers.From.MailAddress.Address; string subject = msg.Headers.Subject; string body = ""; // We prefer multipart if it's available if (msg.MessagePart.IsMultiPart) { body = msg.FindFirstHtmlVersion().GetBodyAsText(); } else { body = msg.FindFirstPlainTextVersion().GetBodyAsText(); } // Date sent to SQLite DateTime format DateTime sent_o = msg.Headers.DateSent; string sent = string.Format("{0:d4}-{1:d2}-{2:d2} {3:d2}:{4:d2}:{5:d2}", sent_o.Year, sent_o.Month, sent_o.Day, sent_o.Hour, sent_o.Minute, sent_o.Second); // Insert it (or not, if it already exists) to the SQLite database SQLiteCommand crCMD = new SQLiteCommand("INSERT OR IGNORE INTO messagetable (id,sender,subject,body,date) VALUES (@_id,@_sender,@_subject,@_body,datetime(strftime('%Y-%m-%d %H:%M:%S',@_sent)))", msgSqlCon); crCMD.Parameters.AddWithValue("@_id", id); crCMD.Parameters.AddWithValue("@_sender", from); crCMD.Parameters.AddWithValue("@_subject", subject); crCMD.Parameters.AddWithValue("@_body", MerMail.Symmetric.EncryptString(currentUser.encryption_key, body)); crCMD.Parameters.AddWithValue("@_sent", sent); crCMD.ExecuteNonQuery(); // calculate the progress percentage progress = (i * 100) / (messageCount); if (progress > lastProgress + 10) { // if the progress is 10 percent higher than lastprogress, // then report it to the progressBar, and set lastprogress // to the progress percentage right now (sender as BackgroundWorker).ReportProgress(progress); lastProgress = progress; } } }
public bool Execute() { // Get already processed messages list List <String> processedMessages = _context.ReferralEmails.Select(x => x.MessageID).ToList(); if (processedMessages == null) { processedMessages = new List <string>(); } // Get any un-processed messages OpenPop.Pop3.Pop3Client popClient = new OpenPop.Pop3.Pop3Client(); popClient.Connect(_popServer, _popPort, _popSSL); popClient.Authenticate(_popUser, _popPassword); var messageIDs = popClient.GetMessageUids(); for (int i = 0; i < messageIDs.Count; i++) { if (!processedMessages.Contains(messageIDs[i])) { OpenPop.Mime.Message msg = null; string msgStatus = ""; string msgSubject = ""; try { msg = popClient.GetMessage(i + 1); msgSubject = msg.Headers.Subject; if (!_seedMode) { msgStatus = ProcessMessage(msg); } } catch (System.Data.Entity.Validation.DbEntityValidationException ex) { if (ex.EntityValidationErrors != null && ex.EntityValidationErrors.Count() > 0 && ex.EntityValidationErrors.First().ValidationErrors != null && ex.EntityValidationErrors.First().ValidationErrors.Count > 0) { string errorMessage = "An error occurred validating the referral." + "\r\nID: " + messageIDs[i] + "\r\nSubject: " + msgSubject + "\r\nFirst Validation Error: " + ex.EntityValidationErrors.First().ValidationErrors.First().ErrorMessage; _logger.LogError(errorMessage); AABC.DomainServices.Email.SMTP.Send(_smtpAccount, "Referral Validation Error", errorMessage, _validationEmail); } else { string errorMessage = "An error occurred validating the referral." + "\r\nID: " + messageIDs[i] + "\r\nSubject: " + msgSubject + "\r\nError Message: " + ex.Message; _logger.LogError(errorMessage); AABC.DomainServices.Email.SMTP.Send(_smtpAccount, "Referral Validation Error", errorMessage, _validationEmail); } msgStatus = "Validation Error"; } catch (System.Exception ex) { string errorMessage = "An error occurred processing the referral." + "\r\nID: " + messageIDs[i] + "\r\nSubject: " + msgSubject + "\r\nError Message: " + ex.Message; _logger.LogError(errorMessage); AABC.DomainServices.Email.SMTP.Send(_smtpAccount, "Referral Error", errorMessage, _errorEmail); msgStatus = "Errored"; } _context.ReferralEmails.Add(new Data.Models.ReferralEmail() { MessageID = messageIDs[i], MessageSubject = msgSubject, MessageStatus = msgStatus, ProcessedTime = DateTime.Now }); _context.SaveChanges(); } } popClient.Disconnect(); popClient.Dispose(); return(true); }