Esempio n. 1
0
 /// <summary>
 /// Busca si hay correos a enviar y los envia por prioridad, si falla el envío
 /// lo intenta hasta 5 veces si no lo puede enviar lo marca como fallido
 /// </summary>
 public static void EnviarCorreos(object source, ElapsedEventArgs e)
 {
     using (NotificacionesEntities entities = new NotificacionesEntities())
     {
         while (MailController.bandera) //Mientras hayan correos a enviar
         {
             try
             {
                 var mails = entities.MENSAJENUEVO.Select(p => new { p.EmailDestino, p.EmailOrigen, p.Tema, p.Mensaje, p.Prioridad, p.Intentos, p.Id }).
                             OrderByDescending((x) => x.Prioridad).ToList();//Selecciona los correos a enviar ordenados por prioridad
                 if (mails.Count < 1)
                 {
                     MailController.bandera = false; break;
                 }                         //Si no hay correos a enviar se detiene
                 var mail = mails.First(); //Obtiene el mail mas prioritario
                 try{
                     server.Send(mail.EmailOrigen, mail.EmailDestino,
                                 mail.Tema, mail.Mensaje);//Envia el correo
                     //Si se envió lo mueve a la tabla de correos enviados o fallidos y le pone estado enviado
                     entities.MoveMessage(mail.Id, 1);
                 }catch (SmtpFailedRecipientException) {                                    //Si no se puede enviar
                     //Si ya cumplió los 5 intentos lo mueve a la tabla de correos enviados o fallidos y le pone estado fallido
                     if (mail.Intentos >= 5)
                     {
                         entities.MoveMessage(mail.Id, 0);
                     }
                     else
                     {
                         entities.IncrementarIntentos(mail.Id);
                     }
                 }                                               //Si no lleva los 5 intentos le suma un intento
             }catch (DataException) { break; }
         }
     }
 }
Esempio n. 2
0
 public HttpResponseMessage NuevoEmail(MENSAJENUEVO email)
 {
     using (NotificacionesEntities entities = new NotificacionesEntities())
     {
         if (ModelState.IsValid)
         {
             try{
                 entities.NewMessage(email.EmailOrigen, email.EmailDestino, email.Tema,
                                     email.Mensaje, 0, email.Prioridad);//Almacena la solicitud
                 bandera = true;
                 return(Request.CreateResponse(HttpStatusCode.OK));
             }catch (DataException) { return(Request.CreateResponse(HttpStatusCode.Conflict)); }
         }
         return(Request.CreateResponse(HttpStatusCode.BadRequest));
     }
 }