public async Task <ActionResult> CrearMailCambio(string txtMail)
 {
     throw new NotImplementedException("Modulo cambio contraseña mail");
     if (!FuncionesEmail.IsValidEmail(txtMail))
     {
         throw new ArgumentException("Email");
     }
     using (Models.SatcEntities entity = new SatcEntities())
     {
         return(null);
     }
 }
        public async Task <ActionResult> CrearMail(string txtMail, TipoConfirmacion tipo)
        {
            var telemetry = new TelemetryClient();

            try
            {
                Guid   id  = Guid.NewGuid();
                string url = "http://" + this.Request.Url.Authority + "/Confirmar/";
                System.Diagnostics.Trace.WriteLine($"[{DateTime.Now}] Enviando mail con URL {url + id}");

                if (!FuncionesEmail.IsValidEmail(txtMail))
                {
                    throw new ArgumentException("Email");
                }

                using (Models.SatcEntities entity = new SatcEntities())
                {
                    alumno a = entity.alumno.FirstOrDefault(alumnoEnDb => alumnoEnDb.correo.Equals(txtMail));
                    if (a == null)
                    {
                        throw new ArgumentOutOfRangeException("No hay alumnos con ese correo registrados");
                    }
                    var c = new confirmacion
                    {
                        tipo   = (int)tipo,
                        fecha  = DateTime.Now,
                        guid   = id,
                        alumno = new List <alumno>()
                        {
                            a
                        },
                        habilitado = true,
                    };
                    entity.confirmacion.Add(c);
                    bool      tarea = false;
                    Exception ex    = null;
                    switch (tipo)
                    {
                    case TipoConfirmacion.NO_ESPECIFICADO:
                        ex = new Exception("Tipo de mail para enviar no especificado");
                        goto default;

                    case TipoConfirmacion.ConfirmacionMail:
                        tarea = await Librerias.MailClient.EnviarMensajeRegistro(txtMail, url, id.ToString());

                        break;

                    case TipoConfirmacion.DesactivacionCuenta:
                        ex = new NotImplementedException("tipo de mail 'desactivarCuenta' no implementado");
                        goto default;

                    case TipoConfirmacion.Contrasena:
                        tarea = await Librerias.MailClient.EnviarMensajeContrasena(txtMail, url, id.ToString());

                        break;

                    default:
                        telemetry.TrackException(ex, new Dictionary <string, string> {
                            { "Controlador: ", "MailController" }
                        });
                        throw ex;
                    }
                    if (!tarea)
                    {
                        throw new Exception("Error al enviar el mail al correo especificado");
                    }

                    entity.SaveChanges();
                }
                ViewBag.TipoMail = (int)tipo;
                return(View("EstadoSolicitud"));
            }
            catch (Exception ex)
            {
                System.Diagnostics.Trace.WriteLine($"[{DateTime.Now}] Ha ocurrido una excepcion.");
                System.Diagnostics.Trace.WriteLine(ex.Message);
                System.Diagnostics.Trace.WriteLine(ex.ToString());
                ViewBag.ModalMessage = ex.Message;

                telemetry.TrackException(ex, new Dictionary <string, string> {
                    { "Controlador: ", "MailController" }
                });

                return(View("Error"));
                //throw ex;
            }
        }