Ejemplo n.º 1
0
 public bool EnviarCorreoInBackground(CorreoBE correo)
 {
     try
     {
         Thread tareas = new Thread(() => { this.EnviarCorreoLocal(correo); });
         tareas.Start();
         return(true);
     }
     catch (Exception ex)
     {
         HelperEnviarCorreo.CrearLog(string.Format("{0}{1}{2}", DateTime.Now, Environment.NewLine, ex.Message));
         return(false);
     }
 }
Ejemplo n.º 2
0
        //public bool EnviarCorreo(string idCanalContenido, string idContenido, Dictionary<string, string> comodinesNotificacion, string idCanalNotificaciones, string idContenidoNotificaciones, string rutaFrondEnd = "")
        //{
        //    bool result = false;
        //    string destino = "";
        //    try
        //    {
        //        HelperEnviarCorreo.CrearLog("EnviarCorreoComodin - Inicio :");
        //        //List<string> comodines = new List<string>();
        //        List<string> valores = new List<string>();

        //        List<string> comodines = new List<string>();

        //        (new ManejadorLog()).RegistrarEvento("dentro de mailerEnviarCorreo");

        //        //Obtener la plantilla para el envio de correo
        //        ScriptorChannel canalNotificaciones = Common.ScriptorClient.GetChannel(new Guid(idCanalNotificaciones));
        //        ScriptorContent contenidoNotificaciones = canalNotificaciones.GetContent(new Guid(idContenidoNotificaciones));
        //        //ScriptorContent contenidoNotificaciones = canalNotificaciones.Contents.Find(x => x.Id.ToString().ToUpper() == idContenidoNotificaciones.ToUpper());

        //        (new ManejadorLog()).RegistrarEvento("despues de canalNotificaciones");


        //        HelperEnviarCorreo.CrearLog("Bien 1");
        //        //var d = contenidoNotificaciones.Parts.A[0].Parts.A;
        //        var archivos = (ScriptorContentInsert)contenidoNotificaciones.Parts.ArchivosAdjuntos;

        //        HelperEnviarCorreo.CrearLog("Bien 2");
        //        CorreoBE correo = new CorreoBE();

        //        if (contenidoNotificaciones.Parts.CorreoPara != "" && contenidoNotificaciones.Parts.CorreoPara != null)
        //        {
        //            correo.Para.Add(contenidoNotificaciones.Parts.CorreoPara);
        //        }

        //        if (comodinesNotificacion != null && comodinesNotificacion.ContainsKey("_para_"))
        //        {
        //            correo.Para.Clear();
        //            destino = comodinesNotificacion["_para_"];
        //            correo.Para.Add(destino);
        //            comodinesNotificacion.Remove("_para_");
        //        }
        //        HelperEnviarCorreo.CrearLog("Bien 3");


        //        if (idCanalContenido != string.Empty && idContenido != string.Empty)
        //        {
        //            //Obtener el contenido para reemplazar los valores en el cuerpo del correo
        //            ScriptorChannel canalContenido = Common.ScriptorClient.GetChannel(new Guid(idCanalContenido));
        //            ScriptorContent contenido = canalContenido.GetContent(new Guid(idContenido));

        //            //ScriptorContent contenido = canalContenido.Contents.Find(x => x.Id.ToString().ToUpper() == idContenido.ToUpper());
        //            HelperEnviarCorreo.CrearLog(idContenido.ToUpper());

        //            if (correo.Para.Count == 0)
        //            {
        //                HelperEnviarCorreo.CrearLog("correo1");

        //                if (contenido.Parts.NombreCompleto != "" && contenido.Parts.NombreCompleto != null)
        //                {
        //                    HelperEnviarCorreo.CrearLog("correo2");
        //                    correo.Para.Add(contenido.Parts.NombreCompleto);
        //                    HelperEnviarCorreo.CrearLog("correo3");
        //                }
        //            }

        //            foreach (var llave in contenido.Parts.Values)
        //            {
        //                string valor = "";

        //                if (llave.GetType().ToString() == "Viatecla.Factory.Scriptor.ScriptorDropdownListValue")
        //                {
        //                    valor = llave.Title;
        //                }
        //                else if (llave.GetType().ToString() == "Viatecla.Factory.Scriptor.ScriptorContentInsert")
        //                {

        //                }
        //                else
        //                {
        //                    valor = llave;
        //                }

        //                valores.Add(valor);
        //            }

        //            comodines = new List<string>(contenido.Parts.Keys);
        //        }
        //        else
        //        {
        //            comodines = comodinesNotificacion.Keys.ToList<string>();
        //            valores = comodinesNotificacion.Values.ToList<string>();
        //        }

        //        HelperEnviarCorreo.CrearLog("Bien 4");
        //        if (contenidoNotificaciones.Parts.CorreoCCO != "" && contenidoNotificaciones.Parts.CorreoCCO != null)
        //        {
        //            correo.ConCopiaOculta.Add(contenidoNotificaciones.Parts.CorreoCCO);
        //        }

        //        HelperEnviarCorreo.CrearLog("Bien 5");
        //        String from = contenidoNotificaciones.Parts.CorreoDe;

        //        correo.Asunto = contenidoNotificaciones.Parts.Asunto;
        //        correo.CuerpoMensaje = contenidoNotificaciones.Parts.CorreoBody.ToString();

        //        HelperEnviarCorreo.CrearLog("Bien 6");
        //        //correo.CuerpoMensaje = ReemplazarComodines(correo.CuerpoMensaje, this.GetComodines(comodines), valores, rutaFrondEnd);

        //        correo.ArchivosAdjuntos = this.GetArchivosAdjuntos(archivos, rutaFrondEnd);

        //        HelperEnviarCorreo helperEnviarCorreo = new HelperEnviarCorreo(from);
        //        helperEnviarCorreo.EnviarCorreoLocal(correo);

        //        HelperEnviarCorreo.CrearLog("EnviarCorreoComodin - Fin:");

        //        result = true;

        //    }
        //    catch (Exception ex)
        //    {
        //        HelperEnviarCorreo.CrearLog("EnviarCorreoComodin - Error:" + ex.Message);
        //        HelperEnviarCorreo.CrearLog("EnviarCorreoComodin - Error:" + ex.InnerException);
        //        HelperEnviarCorreo.CrearLog("EnviarCorreoComodin - Error:" + ex.StackTrace);
        //        result = false;
        //    }

        //    return result;
        //}

        //public List<ArchivoAdjunto> GetArchivosAdjuntos(ScriptorContentInsert contentInsert, string pathFrontEnd)
        //{
        //    List<ArchivoAdjunto> archivoAdjuntoList = new List<ArchivoAdjunto>();

        //    foreach (ScriptorContent content in contentInsert)
        //    {
        //        ArchivoAdjunto archivoAdjunto = new ArchivoAdjunto();
        //        archivoAdjunto.NombreArchivo = content.Parts.Titulo;
        //        archivoAdjunto.RutaArchivoWeb = string.Format("{0}{1}", pathFrontEnd, content.Parts.ArchivoAdjunto);
        //        archivoAdjunto.RutaArchivoWeb = archivoAdjunto.GetRutaArchivoWebFront();
        //        archivoAdjuntoList.Add(archivoAdjunto);
        //    }

        //    return archivoAdjuntoList;
        //}

        private void EnviarCorreo_Aux(CorreoBE correo,
                                      Boolean isbodyHtml,
                                      System.Net.Mail.MailPriority prioridad)
        {
            System.Net.Mail.MailMessage Mail = new System.Net.Mail.MailMessage();

            isbodyHtml = true;
            prioridad  = System.Net.Mail.MailPriority.High;

            List <LinkedResource> lstLinked = new List <LinkedResource>();

            //'----------------------------------------------------------------------------------
            if (correo.Para != null)
            {
                foreach (String reg in correo.Para)
                {
                    Mail.To.Add(reg);
                }
            }
            if (correo.ConCopia != null)
            {
                foreach (String reg in correo.ConCopia)
                {
                    Mail.CC.Add(reg);
                }
            }
            if (correo.ConCopiaOculta != null)
            {
                foreach (String reg in correo.ConCopiaOculta)
                {
                    Mail.Bcc.Add(reg);
                }
            }
            if (correo.ArchivosAdjuntos != null)
            {
                foreach (ArchivoAdjunto reg in correo.ArchivosAdjuntos)
                {
                    if (String.IsNullOrEmpty(reg.RutaArchivoDisco))
                    {
                        if (!String.IsNullOrEmpty(reg.RutaArchivoWeb))
                        {
                            System.Net.Mail.Attachment archivo = null;
                            switch (System.Configuration.ConfigurationManager.AppSettings["TipoCorreoAdjunto"])
                            {
                            case "1":    //adjunto
                                reg.RutaArchivoDisco = HelperEnviarCorreo.GuardarImagenDeUrl(reg.RutaArchivoWeb, reg.NombreArchivo);
                                //adjunto
                                archivo = new System.Net.Mail.Attachment(reg.RutaArchivoDisco);
                                Mail.Attachments.Add(archivo);
                                break;

                            case "2":    //base64

                                if (reg.NombreArchivo.ToUpper().Contains(".PNG") ||
                                    reg.NombreArchivo.ToUpper().Contains(".JPEG") ||
                                    reg.NombreArchivo.ToUpper().Contains(".GIF") ||
                                    reg.NombreArchivo.ToUpper().Contains(".JPG"))
                                {
                                    /*
                                     * string imagen64bits = "";
                                     * reg.RutaArchivoDisco = HelperEnviarCorreo.GuardarImagenDeUrl(reg.RutaArchivoWeb, reg.NombreArchivo, out imagen64bits);
                                     * reg.Imagen64bits = imagen64bits;
                                     *
                                     * correo.CuerpoMensaje = correo.CuerpoMensaje.Replace("cid:" + reg.NombreArchivo, "data:image/jpeg;base64," + reg.Imagen64bits);
                                     */
                                    reg.RutaArchivoDisco = HelperEnviarCorreo.GuardarImagenDeUrl(reg.RutaArchivoWeb, reg.NombreArchivo);
                                    LinkedResource sampleImage = new LinkedResource(reg.RutaArchivoDisco,
                                                                                    MediaTypeNames.Image.Jpeg);
                                    sampleImage.ContentId = reg.NombreArchivo;
                                    lstLinked.Add(sampleImage);
                                }
                                else
                                {
                                    reg.RutaArchivoDisco = HelperEnviarCorreo.GuardarImagenDeUrl(reg.RutaArchivoWeb, reg.NombreArchivo);
                                    //adjunto
                                    archivo = new System.Net.Mail.Attachment(reg.RutaArchivoDisco);
                                    Mail.Attachments.Add(archivo);
                                }
                                break;

                            case "3":    //url
                                string   urlDominioWebFrontEnd = System.Configuration.ConfigurationManager.AppSettings["UrlDominioWebFrontEnd"];
                                string   urlTmp       = reg.GetRutaArchivoWebFront();
                                string   urlTmpSufijo = "";
                                string[] listatmp     = urlTmp.Split('/');
                                for (int i = 0; i < listatmp.Length; i++)
                                {
                                    if (i >= 3)
                                    {
                                        urlTmpSufijo = urlTmpSufijo + '/' + listatmp[i];
                                    }
                                }
                                urlTmp = urlDominioWebFrontEnd + urlTmpSufijo;
                                correo.CuerpoMensaje = correo.CuerpoMensaje.Replace("cid:" + reg.NombreArchivo, urlTmp);
                                break;
                            }
                        }
                    }
                }
            }



            Mail.From = new System.Net.Mail.MailAddress(this.From);

            Mail.Subject    = correo.Asunto;
            Mail.IsBodyHtml = isbodyHtml;
            Mail.Body       = correo.CuerpoMensaje;
            switch (System.Configuration.ConfigurationManager.AppSettings["TipoCorreoAdjunto"])
            {
            case "2":    //adjunto
            {
                /*ContentType mimeType = new System.Net.Mime.ContentType("text/html");
                 * AlternateView alternate = AlternateView.CreateAlternateViewFromString(correo.CuerpoMensaje, mimeType);
                 * Mail.AlternateViews.Add(alternate);*/
                AlternateView htmlView = AlternateView.CreateAlternateViewFromString(correo.CuerpoMensaje, null, MediaTypeNames.Text.Html);
                foreach (var item in lstLinked)
                {
                    htmlView.LinkedResources.Add(item);
                }
                Mail.AlternateViews.Add(htmlView);
            }
            break;
            }

            //'----------------------------------------------------------------------------------
            SmtpClient cliente = new SmtpClient();

            cliente.Host = "" + System.Configuration.ConfigurationManager.AppSettings["Host"];
            if (Convert.ToString(System.Configuration.ConfigurationManager.AppSettings["Port"]) != "")
            {
                cliente.Port = Convert.ToInt32(System.Configuration.ConfigurationManager.AppSettings["Port"]);
            }
            cliente.EnableSsl             = Convert.ToBoolean(System.Configuration.ConfigurationManager.AppSettings["EnableSsl"]);
            cliente.UseDefaultCredentials = Convert.ToBoolean(System.Configuration.ConfigurationManager.AppSettings["UseDefaultCredentials"]);
            if (cliente.UseDefaultCredentials == false)
            {
                cliente.Credentials = new NetworkCredential(System.Configuration.ConfigurationManager.AppSettings["CredentialsUser"], "" + System.Configuration.ConfigurationManager.AppSettings["CredentialsClave"]);
            }

            //'----------------------------------------------------------------------------------
            try
            {
                cliente.Send(Mail);
            }
            catch (Exception ex)
            {
                throw new Exception(ex.Message);
            }
        }
Ejemplo n.º 3
0
 public void EnviarCorreoLocal(CorreoBE correo)
 {
     EnviarCorreo_Aux(correo,
                      true,
                      System.Net.Mail.MailPriority.Normal);
 }