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;
}
}
}
}
No hay comentarios:
Publicar un comentario