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ón

msg.Fields.Add(

"http://schemas.microsoft.com/cdo/configuration/smtpauthenticate", "1");

// Nombre de usuario

msg.Fields.Add(
"http://schemas.microsoft.com/cdo/configuration/sendusername", "user");

// Contraseña

msg.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 

 

Pedro  Herrarte  Sánchez
Enviar email con C#
Pedro Herrarte Sánchez

Pedro Herrarte, es consultor independiente, ofreciendo servicios de consultoría, análisis, desarrollo y formación. Posee mas de diez años de experiencia trabajando para las principales empresas de España. Es especialista en tecnologías .NET, entornos Web (ASP.NET, ASP.NET MVC,jQuery, HTML5), bases de datos (SQL Server y ORACLE) e integración de sistemas. Es experto en desarrollo (C#, VB.Net, T-SQL, PL/SQL, , ASP, CGI , C, Pro*C, Java, Essbase, Vignette, PowerBuilder y Visual Basic ...) y bases de datos (SQL Server y ORACLE). Pedro es MCP y MAP 2012, es fundador, diseñador y programador de www.devjoker.com..
Fecha de alta:27/08/2007
Última actualizacion:27/08/2007
Visitas totales:85632
Valorar el contenido:
Últimas consultas realizadas en los foros
Últimas preguntas sin contestar en los foros de devjoker.com