InicioArticulos y noticiasBases de datosProgramaciónForosInternetServiciosContratacionEmail
También puedes ver ...
TransactionScope - Simplificando el trabajo con transacciones.
LinQ To SQL - Un ejemplo sencillo
Cómo activar Intelisense (autocompletado) en el Web.config
Leer un campo XML de SQL Server 2005 con C#
TripleDES - Un ejemplo practico en C#
Mostrar un GridView dentro de un DataList
Métodos Extensores: INNER JOIN
String.Format
Problemas en la instalación de Visual Studio 2008-Visual studio web authoring component
Redimiento de VS2008

Afiliados
La Web del programador
MundoProgramacion


 

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 

 


 Versión para imprimir  Foros de consulta

 
=S por Rodrigo
Respuesta recibida el [05/10/2007 05:40:09]
Si bien podría ayudar bastante copiando y pegando el código, creo que faltó una explicación, para entender el código. De todas formas se agradece

 
Problemas para enviar mails por Vitucho
Respuesta recibida el [09/01/2008 10:24:48]
Hola, tengo un problema al enviar mails mediante C# y Framework 1.1, el mensaje de error es el siguiente:
System.Web.HttpException: No se puede obtener acceso al objeto 'CDO.Message'. ---> System.Reflection.TargetInvocationException: Se inició una excepción en el destino de la invocación. ---> System.Runtime.InteropServices.COMException (0x8004020F): El servidor rechazó una o más direcciones de destinatarios. Respuesta del servidor: 450 4.7.1 Client host rejected: cannot find your hostname, [172.30.125.77]
*******************
Ojala alguién me pueda ayudar, gracias de antemano.
PD. Uso el mismo código expuesto, el servidor smtp es un Centos 5.0

 
me falta el .Mail por Javi
Respuesta recibida el [18/03/2008 10:53:04]
no se si será normal, supongo que no, pero cuando estoy introduciendo la línea "using System.Web.Mail;" el .Mail, no me lo reconoce. Trabajo con .Net 1.1 y no se que es lo que pasará.


 
Como hago un atach por ecdundy
Respuesta recibida el [27/04/2008 07:13:02]
Mi duda es que todo esto esta muy didactico pero si quiero hacer un atach o sea adjuntar un archivo para enviarlo por correo como se hace >?

 
adjuntar archivo a un mail en framework 1.1 por nachoman
Respuesta recibida el [08/05/2008 02:55:21]
para adjuntar un archivo en el fw 1.1

//de donde es el archivo
sFile = "c:\\miarchivo.txt";
creo mi objeto atach oAttch = new System.Web.Mail.MailAttachment(sFile,System.Web.Mail.MailEncoding.Base64);
//y lo agrego a mi mensaje
msg.Attachments.Add(oAttch);

 
error de coneccion con el servidor por nachoman
Respuesta recibida el [08/05/2008 03:03:37]
yo autentifico y todo, doy mi login mi pass, y me sale este error, no se que podria estar pasando
Error de transporte en la conexión al servidor

antes si lo enviaba pero ahora no, creo que cambiaron los protocolos de correo otraves, pero ahora no veo ninguna solucion, ni nada por el estilo, aun sigo investigando aunque llevo como 3 dias con lo mismo, y ya me duele la espalda, seguramente cuando termine mi premio sera un masaje por alguna chica nudista, ayudenme, para que no espere tanto el masaje jeje :D


Añadir comentario ... Para preguntar utiliza los foros
Autor:

Título:


Para preguntar utiliza los foros.



 Versión para imprimir

Enviar email con C#
Autor: Pedro Herrarte Sánchez
Visitas: 5891 Fecha de publicación: 27/08/2007
Pedro Herrarte, es consultor independiente, ofreciendo sercivios 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, bases de datos (SQL Server y ORACLE) e integración de sistemas.

Es experto en desarrollo (C#, ASP.NET, 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).

Es fundador, diseñador y programador de www.devjoker.com.




18/08/2008 SQL Server 2008
Visitas: 39 | Comentarios: 0 | Archivo: Articulos
Categorias: Transact-SQL
Visitas: 131 | Comentarios: 0 | Archivo: Articulos
Categorias: C#|ADO.NET|LinQ
Visitas: 161 | Comentarios: 1 | Archivo: Articulos
Categorias: Humor
Visitas: 154 | Comentarios: 0 | Archivo: Articulos
Categorias: WCF
Visitas: 123 | Comentarios: 0 | Archivo: Articulos
Categorias: WCF
Visitas: 210 | Comentarios: 0 | Archivo: Articulos
Categorias: ASP.NET
Visitas: 278 | Comentarios: 5 | Archivo: Articulos
Categorias: ASP.NET
Visitas: 4990 | Comentarios: 4 | Archivo: Articulos
Categorias: C#|Transact-SQL|LinQ
Visitas: 602 | Comentarios: 1 | Archivo: Articulos
Categorias: Visual Studio
Visitas: 1402 | Comentarios: 1 | Archivo: Articulos
Categorias: Transact-SQL

Útimos temas recibidos en los foros ...
MAQUINAS VIRTUALES por victor ... [WIN 98/NT/2000/XP] 0 19/08/2008
Y lo mismo en WEB por systemat ... [C#] 1 18/08/2008
Manual del minicom de Linux con fotos. por Meta ... [UNIX] 4 17/08/2008
PROGRAMACION por JUANMA ... [Visual Basic .NET] 1 19/08/2008
Conectar ASP con B.D Informix por Franco ... [ASP] 9 02/05/2007
Codigo salir por Jazmin ... [ASP.NET] 1 18/08/2008
EXPORTAR DATOS A ARCHIVOS PLANOS. por WIX ... [ORACLE] 10 06/08/2007
formulario por artdark ... [C#] 2 04/08/2008
Codigo salir por Jazmin ... [ASP.NET] 0 18/08/2008
cambiar de modo un gried view por ivan ... [ASP.NET] 0 18/08/2008
ayuda urgente porfavor por vicancer ... [ASP.NET] 0 18/08/2008
pollo por hajaj ... [Actualidad] 1 15/08/2008

Access CGI JSP ORACLE UNIX
Actualidad HTML/DHTML/XHTML LINUX PHP Visual Basic .NET
ASP ISAPI MS DOS Power Builder Visual Basic 6.0
ASP.NET Java mySQL SQL WIN 98/NT/2000/XP
C# JavaScript Opinion SQL Server

devjoker  Te recomendamos además ...
28/08/2006 Ubuntu en VmWare con VMware Tools
11/06/2008 Problemas con el diseñador Web de Visual Studio 2008
03/10/2006 Creación de objetos    forma parte de...Tutorial C#
23/05/2006 Cursores en PL/SQL    forma parte de...Tutorial PL/SQL
09/10/2006 Cadenas de texto    forma parte de...Tutorial C#
20/07/2006 Transacciones con PL/SQL    forma parte de...Tutorial PL/SQL
22/10/2005 Componentes del lenguaje SQL    forma parte de...Tutorial SQL
24/05/2006 Cursores Implicitos en PL/SQL    forma parte de...Tutorial PL/SQL
11/10/2006 Constantes    forma parte de...Tutorial C#
02/10/2006 Espacio de nombres distribuidos    forma parte de...Tutorial C#

 

Encuesta
Si trabajas con .NET ¿Que entorno utilizas?
[Ver] [Votar]