Oct 23 2008

C# Enviar correo electronico desde .NET

Category: ProgramacionIndigo @ 10:05 AM

ara enviar un correo electrónico tenemos que usar los siguientes espacios de nombres

[sourcecode language='csharp']using System.Net;
using System.Net.Mail;[/sourcecode]

Con esto tendremos a nuestra disposición una serie de clases que nos harán la vida muy fácil para conseguir nuestro objetivo. Para enviar un correo electrónico necesitamos la siguiente información

  • Servidor smtp
  • Puerto (normalmente 25)
  • Nombre de usuario y contraseña en caso que el servidor requiera autencación.

El código es tan simple como este

[sourcecode language='csharp']try
{
SmtpClient smtpClient = new SmtpClient(”Servidor SMTP”, 25);

// Si tu servidor necesita autenticación
if ((_userName != string.Empty) && (_password != string.Empty))
{
NetworkCredential networkCredential = new NetworkCredential(”username”, “passwor”);
smtpClient.UseDefaultCredentials = false;
smtpClient.Credentials = networkCredential;
}

string body = string.Empty;
if (_isBodyHtml)
body = “Tu mensaje en html.”;
else
body = “Tu mensaje en texto plano.”;

MailMessage mailMessage = new MailMessage(”from”, “to”, “subject”, body);
mailMessage.IsBodyHtml = _isBodyHtml;

if (_sendAsync)
smtpClient.SendAsync(mailMessage, null);
else
smtpClient.Send(mailMessage);
}
catch
{
throw;
}

[/sourcecode]

  • Al principio creamos una instancia del objeto SmtpClient para lo cual necesitamos una dirección del host y el puerto de conexión.
  • Despues, es caso de que nuestro servidor requiera autenticación, creamos la credenciales que se usar al conectar con nuestro servidor de correo.
  • Despues construimos el mensaje, en base a la variable _isBodyHtml que nos dirá si el mensaje irá en texto plano o en html.
  • Posteriormente creamos el mensaje de correo, con un from (de), to (para), subject(asunto) y el mensaje.
  • Y para finalizar se envia el correo de manera síncrona o asíncrona dependiendo de _sendAsync.

Como vemos es realmente fácil. En caso que el envio te falle ten en cuenta

  1. Comprueba que los datos del host, nombre de usuario y contraseña sean correctos.
  2. Tengas acceso a la red y no salgas a Internet a través de un proxy.
  3. Comprobar si el antivirus te está bloqueando el envio del correo. A mi con el McAfee activado no puedo enviar correos.

Saludos.

Tags: ,