Esempio n. 1
0
        private static MailMessage ConstruirMailMensaje(Correo correoOrigen, Cuenta cuenta)
        {
            var Mensaje = new MailMessage();

            var from = new MailAddress(cuenta.CorreoSalida, cuenta.NombreMostrar, Encoding.UTF8);
            Mensaje.From = from;

            var MAC_PRIN = (MailAddressCollection)ObtenerDestinatarios(TipoDestinatario.Principal, correoOrigen);
            foreach (MailAddress MA in MAC_PRIN)
            {
                Mensaje.To.Add(MA);
            }

            var MAC_CC = (MailAddressCollection)ObtenerDestinatarios(TipoDestinatario.Copia, correoOrigen);
            foreach (MailAddress MA in MAC_CC)
            {
                Mensaje.CC.Add(MA);
            }

            var MAC_CCO = (MailAddressCollection)ObtenerDestinatarios(TipoDestinatario.CopiaOculta, correoOrigen);
            foreach (MailAddress MA in MAC_CCO)
            {
                Mensaje.Bcc.Add(MA);
            }

            #region Creación de adjuntos

            //if (correoOrigen.correosAdjuntos.Count > 0)
            //{
            //    foreach (var adjunto in correoOrigen.correosAdjuntos)
            //    {
            //        if (!string.IsNullOrEmpty(adjunto.CADrutaArchivo))
            //        {
            //            var attachment = new Attachment(adjunto.CADrutaArchivo.Replace("<RutaArchivo>", "").Replace("</RutaArchivo>", ""), MediaTypeNames.Application.Octet);
            //            Mensaje.Attachments.Add(attachment);
            //        }
            //    }
            //}

            #endregion

            #region Creación del cuerpo del mensaje

            //Mensaje.AlternateViews.Add(AlternateView.CreateAlternateViewFromString(correoOrigen.CORmensajeTexto, Encoding.UTF8, "text/plain"));
            Mensaje.AlternateViews.Add(AlternateView.CreateAlternateViewFromString(correoOrigen.CORmensajeHTML, Encoding.UTF8, "text/html"));
            Mensaje.Subject = correoOrigen.CORasunto;
            Mensaje.SubjectEncoding = Encoding.UTF8;

            #endregion

            #region Prioridad mensaje

            //switch (correoOrigen.CORprioridad)
            //{
            //    case "AL":
            //        Mensaje.Priority = MailPriority.High;
            //        break;
            //    case "NO":
            //        Mensaje.Priority = MailPriority.Normal;
            //        break;
            //    case "BA":
            //        Mensaje.Priority = MailPriority.Low;
            //        break;
            //    default:
            //        Mensaje.Priority = MailPriority.Normal;
            //        break;
            //}
            Mensaje.Priority = MailPriority.Normal;
            #endregion

            if (!string.IsNullOrEmpty(cuenta.CorreoRespuesta))
                Mensaje.ReplyToList.Add(new MailAddress(cuenta.CorreoRespuesta, cuenta.NombreMostrar, Encoding.UTF8));

            /* Depuracion: Enviar un mensaje si el mensaje se envio correctamente */
            Mensaje.DeliveryNotificationOptions = DeliveryNotificationOptions.Never;

            /* Confirmación de lectura */
            if (!string.IsNullOrEmpty(cuenta.CorreoConfirmacionLectura))
                Mensaje.Headers.Add("Disposition-Notification-To", cuenta.CorreoConfirmacionLectura);

            //Encabezado de mensaje. evitar filtros spam
            //  string messageId = Guid.NewGuid().ToString().Replace("-", "").ToLower() + this.CORcuenta.CCOusuario;
            Mensaje.Headers.Add("Message-ID", correoOrigen.Id.ToString());

            Mensaje.BodyEncoding = Encoding.UTF8;

            // Se agregó para omitir las validaciones de servidor que ejecuta google a servidores corporativos
            ServicePointManager.ServerCertificateValidationCallback =
                delegate (object s
                    , X509Certificate certificate
                    , X509Chain chain
                    , SslPolicyErrors sslPolicyErrors)
                {
                    return true;
                };
            return Mensaje;
        }
Esempio n. 2
0
        private static MailAddressCollection ObtenerDestinatarios(TipoDestinatario Tipo, Correo correo)
        {
            MailAddressCollection MAC = new MailAddressCollection();

            try
            {
                string Lista = string.Empty;

                switch (Tipo)
                {
                    case TipoDestinatario.Principal:
                        Lista = correo.CORdestinatarios;
                        break;
                    //case TipoDestinatario.Copia:
                    //    Lista = correo.CORdestinatariosCopia;
                    //    break;
                    //case TipoDestinatario.CopiaOculta:
                    //    Lista = correo.CORdestinatariosCopiaOculta;
                    //    break;
                    default:
                        Lista = correo.CORdestinatarios;
                        break;
                }

                if (!string.IsNullOrEmpty(Lista))
                {
                    string[] Dest = Lista.Split(';');

                    foreach (string S in Dest)
                    {
                        if (!string.IsNullOrEmpty(S) && S.Split('<').Length > 1 && S.Split('"').Length > 1)
                        {
                            string Direccion = S.Split('<')[1].Replace('>', ' ').Trim();
                            string NombreMostrar = S.Split('"')[1].Trim();
                            MailAddress MA = new MailAddress(Direccion, NombreMostrar,
                                Encoding.UTF8);
                            MAC.Add(MA);
                        }
                    }
                }
            }
            catch (Exception exc)
            {
                new Exception("Error al obtener destinatario", exc);
            }

            return MAC;
        }