Mostrando entradas con la etiqueta send an email from app. Mostrar todas las entradas
Mostrando entradas con la etiqueta send an email from app. Mostrar todas las entradas

miércoles, 11 de septiembre de 2013

Send Mail .NET

Seguro más de uno nos hemos topado con una aplicación para enviar mails y validar al menos el formato de correo, aqui les dejo esta clase, espero les sea util.

class Email
    {

        static MailMessage _message;
        static SmtpClient _clienteSmtp;
        static Attachment _at;
        static int _puerto = 25;
        static string _user = "", _password = "";

        public static bool IsValidEmail(string email)
        {
            string expresion = "\\w+([-+.']\\w+)*@\\w+([-.]\\w+)*\\.\\w+([-.]\\w+)*";

            if (Regex.IsMatch(email, expresion))
            {
                if (Regex.Replace(email, expresion, String.Empty).Length == 0)
                { return true; }
                else
                { return false; }
            }
            else
            { return false; }
        }

        public static void ConfigEmail(string from, string usuario, string contraseña, int puertoSalida, string smtp)
        {
            _message = new MailMessage();
            _message.From = new MailAddress(from);
            _clienteSmtp = new SmtpClient(smtp);
            _user = usuario;
            _password = contraseña;
            _clienteSmtp.Port = puertoSalida;
        }

        public static bool SendEmail(string to, string cc, string asunto, string mensaje, string ruta_archivo_adjunto)
        {

            try
            {

                _at = new Attachment(ruta_archivo_adjunto);

                _message.Attachments.Add(_at);

                _message.To.Add(to);

                _message.CC.Add(cc);

                _message.Subject = asunto;

                _message.IsBodyHtml = true; //el texto del mensaje lo pueden poner en HTML y darle formato

                _message.Body = mensaje;

                //Establesco que usare seguridad (ssl = Secure Sockets Layer)
                _clienteSmtp.EnableSsl = true;

                _clienteSmtp.UseDefaultCredentials = false;

                _clienteSmtp.Credentials = new NetworkCredential(_user, _password);

                ServicePointManager.ServerCertificateValidationCallback =
                       (s, certificate, chain, sslPolicyErrors) => true;
                _clienteSmtp.Send(_message);

                return true;

            }
            catch
            {

                try
                {
                    //Establesco que no usare seguridad ssl (por si no pudo enviarlo con ssl habilitado)
                    _clienteSmtp.EnableSsl = false;
                    _clienteSmtp.Send(_message);

                    return true;
                }
                catch
                {
                    return false;
                }

            }

        }
    }