Enviar email con C#
Enviar un email con C# es una tarea realmente sencilla, sin embargo es una pregunta muy frecuente en cualquier foro.
Además, la forma de envío ha cambiado con el framework 2.0. Así que vamos a diferenciarlo.
Enviar un email con C# utilizando .Net FrameWork 1.1
Lo primero que debemos hacer es incluir la referencia al assemblie System.Web. Esto no es necesario si se trata de una aplicación ASP.NET.
El siguiente código muestra como enviar un email, utilizando un servidor de correo de acceso público.
using System; using System.Web.Mail; namespace EnviarMail { class ClassEnviarMail{ [STAThread] static void Main(string[] args){ MailMessage msg = new MailMessage();msg.To = "devjoker@djk.com"; msg.From = "Administrador@djk.com"; msg.Subject = "El asunto del mail"; msg.Body = "Este es el contenido del email"; msg.Priority = MailPriority.High; msg.BodyFormat = MailFormat.Text ; //o MailFormat.Html SmtpMail.SmtpServer = "WIN02"; // El servidor de correo try { SmtpMail.Send(msg);
} catch (Exception ex){ Console.WriteLine (ex.Message ); Console.ReadLine();
} } } }
|
El mismo código, pero utilizando un servidor que requiere autenticación.
using System; using System.Web.Mail; namespace EnviarMail { class ClassEnviarMail{ [STAThread] static void Main(string[] args) { MailMessage msg = new MailMessage(); msg.To = "destinatario@djk.com"; msg.From = "quienenvia@djk.com"; msg.Subject = "El asunto del mail"; msg.Body = "Este es el contenido del email"; msg.Priority = MailPriority.High; msg.BodyFormat = MailFormat.Text ; //o MailFormat.Html // Activar Autenticaciónmsg.Fields.Add( "http://schemas.microsoft.com/cdo/configuration/smtpauthenticate", "1"); // Nombre de usuariomsg.Fields.Add( "http://schemas.microsoft.com/cdo/configuration/sendusername", "user"); // Contraseñamsg.Fields.Add( "http://schemas.microsoft.com/cdo/configuration/sendpassword", "password"); SmtpMail.SmtpServer = "WIN02";// El servidor de correo try{ SmtpMail.Send(msg);
} catch (Exception ex){ Console.WriteLine (ex.Message ); Console.ReadLine();
}
} } }
|
Enviar un email con C# utilizando .Net FrameWork 2.0
Utilizando el frameWork 2.0, cambia bastante. Ya no son las clase de System.Web.Mail las que usamos, sino las de System.Net.Mail.
No obstante, el código anterior del framework 1.1 sigue funcionando en el framework 2.0.
using System; using System.Net.Mail; namespace EnviarMail { class ProgramEnviarMail{ static void Main(string[] args){ MailMessage msg = new MailMessage(); msg.To.Add (new MailAddress("devjoker@djk.com")); msg.From = new MailAddress("Administrador@djk.com"); msg.Subject = "El asunto del mensaje(2.0)"; msg.Body = "El contenido del mensaje"; SmtpClient clienteSmtp = new SmtpClient("WIN02"); try { clienteSmtp.Send(msg);
} catch (Exception ex){ Console.Write(ex.Message);Console.ReadLine(); } } } }
|
Y si el servidor necesita autenticación:
using System;
using System.Net; // Nueva using System.Net.Mail; namespace EnviarMail { class ProgramEnviarMail{ static void Main(string[] args){ MailMessage msg = new MailMessage(); msg.To.Add (new MailAddress("devjoker@djk.com")); msg.From = new MailAddress("Administrador@djk.com"); msg.Subject = "El asunto del mensaje(2.0)"; msg.Body = "El contenido del mensaje"; SmtpClient clienteSmtp = new SmtpClient("WIN02"); // Este es el código nuevo clienteSmtp.Credentials =
new NetworkCredential("usuario", "clave"); try{ clienteSmtp.Send(msg);
} catch (Exception ex){ Console.Write(ex.Message);Console.ReadLine(); } } } }
|
También podemos utilizar el Web.Config para especificar los datos de acceso al servidor de correo.
<
system.net> <mailSettings> <smtp from="usuario@djk.com"> <network host="smtpserver1" port="25" userName="username" password="secret" defaultCredentials="true" /> </smtp> </mailSettings> </system.net> |
Saludos, DJK