예제 #1
0
        public static bool EnviarCorreo(string sAsunto, string sMensaje, string sPara, Dictionary <string, Stream> Adjuntos)
        {
            if (!UtilLocal.IsEmailValid(sPara))
            {
                return(false);
            }

            SmtpClient        Correo  = new SmtpClient();
            NetworkCredential Acceso  = new NetworkCredential();
            MailMessage       Mensaje = new MailMessage();

            var oConfig = Config.ValoresVarios("Correo.");

            Correo.Host        = oConfig["Correo.Servidor"];
            Correo.Port        = Util.Entero(oConfig["Correo.Puerto"]);
            Correo.EnableSsl   = (oConfig["Correo.Ssl"].ToLower() == "v");
            Acceso.UserName    = oConfig["Correo.Usuario"];
            Acceso.Password    = oConfig["Correo.Contrasenia"];
            Correo.Credentials = Acceso;

            Mensaje.From = new MailAddress(Acceso.UserName, oConfig["Correo.Nombre"]);
            Mensaje.To.Add(sPara);
            Mensaje.Subject    = sAsunto;
            Mensaje.Body       = sMensaje;
            Mensaje.IsBodyHtml = true;
            if (Adjuntos != null && Adjuntos.Count > 0)
            {
                foreach (var oAdjunto in Adjuntos)
                {
                    Mensaje.Attachments.Add(new Attachment(oAdjunto.Value, oAdjunto.Key));
                }
            }

            try
            {
                Correo.SendCompleted += new SendCompletedEventHandler((s, e) =>
                {
                    var oMensaje = (e.UserState as MailMessage);
                    if (oMensaje != null)
                    {
                        foreach (var oAdjunto in oMensaje.Attachments)
                        {
                            oAdjunto.ContentStream.Close();
                        }
                    }
                });
                Correo.SendAsync(Mensaje, Mensaje);
            }
            catch { return(false); }

            ServicePointManager.ServerCertificateValidationCallback =
                delegate
                (
                    object s
                    , X509Certificate certificate
                    , X509Chain chai
                    , SslPolicyErrors sslPolicyErrors
                )
            { return(true); };

            return(true);
        }