Clase en C# para validar y enviar correos electrónicos con copia y archivo adjunto

Esta clase tiene un métodos para:

– Validar si un mail está correctamente escrito
– Configurar la cuenta de correo saliente
– Enviar correos con copia y archivo adjunto

Recomiendo sobrecarguen el método de EnviarMail a todas las variables posibles de parámetros.

 

using System;
using System.Collections.Generic;
using System.Text;

//necesarios para los métodos
using System.Net;
using System.Net.Mail;
using System.Text.RegularExpressions;

class emails
{
        MailMessage message;
        SmtpClient clienteSmtp;
        Attachment at;
        int puerto;
        string user, password;

        public bool validarEmail(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 void ConfigurarMail(string from, string usuario, string contraseña, int puerto_salida, string smtp)
        {
                message = new MailMessage();

                message.From = new MailAddress(from);

                clienteSmtp = new SmtpClient(smtp);

                user = usuario;

                password = contraseña;

                clienteSmtp.Port = puerto_salida;

        }

        public bool EnviarMail(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);

                    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;
                    }

            }

        }
}

También te podría gustar...

9 Respuestas

  1. Anónimo dice:

    no entiendo bien el codigo haslo paso a paso para ver mejor su funcionamiento

  2. Daniel Bu dice:

    Excelente aporte, lo probaré.

Escribeme un comentario

Tu dirección de correo electrónico no será publicada.