Índice de la sección dedicada a .NET (en el Guille) ASP.NET

Enviar correo con ASP.NET v1.x

 

Publicado el 31/Ene/2006
Actualizado el 31/Ene/2006
Autor: Guillermo 'guille' Som

En este artículo te explico como enviar un correo desde una pagina de ASP.NET (.aspx) usando las clases de System.Web.Mail que son validas tanto para las versiones 1.x y 2.0 de ASP.NET, (aunque para la versión 2.0 hay un articulo que usa las nuevas clases recomendadas)

 

Enviar correo desde una página ASPX usando ASP.NET v1.1 (y v1.0)

El código que vamos a ver, nos permitirá enviar correos desde páginas de ASP.NET (.aspx), usando las clases del espacio de nombres System.Web.Mail.
De ese espacio de nombres usaremos dos clases: MailMessage que será la clase con la que crearemos el mensaje, y en la que indicaremos el que envía el mensaje, quién lo recibe, el asunto, etc. Para enviar ese mensaje usaremos los métodos estáticos (compartidos) de la clase SmtpMail.

Estas clases se pueden usar indistintamente en las versiones 1.x y 2.0 de .NET Framework, aunque en ese último nos advertirá que esas clases están obsoletas, ya que la versión 2,0 ofrece nuevas clases para el envío de correos, pero de eso nos ocupamos en el artículo dedicado a la versión 2.0: Enviar correo con ASP.NET 2.0.

Y si quieres ver el código para enviar correo desde una páginas ASP (no de .NET), puedes ver este otro artículo: Enviar correo desde una página ASP.

 

Crear el mensaje

Lo primero que debemos hacer es crear el mensaje que vamos a enviar. Como te he comentado antes, para crear ese mensaje usaremos la clase MailMessage, a la que le indicaremos los datos habituales:
-El que envía el mensaje (propiedad From)
-A quién va dirigido el mensaje (propiedad To)
-El asunto del mensaje (propiedad Subject)
-El cuerpo (o contenido) del mensaje, (propiedad Body)
-Y algunas cosas más como el formato del mensaje y la prioridad.

En el código que te muestro a continuación, se supone que tenemos un formulario Web con los controles (de tipo TextBox) para cada una de esas propiedades.

Nota:
El código que te muestro a continuación es tanto para Visual Basic como para C#.
En algunos casos solo mostraré el código de Visual Basic, (esto que te voy a decir no es broma), y el equivalente de C# será exactamente el mismo, pero añadiendo un punto y coma al final.
Si hay más diferencia que un simple punto y coma, te mostraré el código de cada lenguaje, de forma independiente.

Lo primero es crear el objeto del tipo MailMessage:

Dim correo As New System.Web.Mail.MailMessage
System.Web.Mail.MailMessage correo = new System.Web.Mail.MailMessage();

A continuación asignamos las propiedades usando los valores de las cajas de texto que tendrá nuestro WebForm (formulario Web):

' El remitente
correo.From = txtDe.Text
' A quién va dirigido
correo.To = txtPara.Text
' El asunto
correo.Subject = txtAsunto.Text
' El cuerpo o texto del mensaje
correo.Body = txtTexto.Text
' El formato del mensaje (texto o html)
correo.BodyFormat = System.Web.Mail.MailFormat.Text
' La prioridad (baja, normal o alta)
correo.Priority = System.Web.Mail.MailPriority.Normal

Una vez que ya tenemos el objeto del mensaje creado, tenemos que enviarlo, para ello usaremos la clase SmtpMail de la que usaremos una propiedad: SmtpServer a la que le indicaremos el servidor de correo por el que queremos enviar el mensaje, este servidor de correo suele toma la forma de mail.servidor.com o correo.servidor.com, dependiendo de la versión o idioma en el que esté configurado el host del servidor de correo.

System.Web.Mail.SmtpMail.SmtpServer = "servidor de correo"

Por último, nos queda la parte más importante: enviar el correo. Para ello usaremos el método Send de la clase SmtpMail, que también es estático (o compartido) y al que le pasaremos el objeto de tipo MailMessage que hemos creado.
El uso de este método lo ponemos dentro de un Try/Catch ya que puede producirse un error al enviar ese mensaje, por ejemplo, si el servidor de correo requiere autenticación o que no se ha podido enviar el mensaje por la causa que sea.
El mensaje de error o acierto lo mostraremos en una etiqueta llamada LabelError.

Try
    System.Web.Mail.SmtpMail.Send(correo)
    LabelError.Text = "Mensaje enviado satisfactoriamente"
Catch ex As Exception
    LabelError.Text = "ERROR: " & ex.Message
End Try
try
{
   System.Web.Mail.SmtpMail.Send(correo);
   LabelError.Text = "Mensaje enviado satisfactoriamente";
}
catch(Exception ex)
{
   LabelError.Text = "ERROR: " + ex.Message;
}

 

Y esto es todo...

 

Nota:
En algunas ocasiones me ha dado error al usar un valor en SmtpServer, en ese caso, prueba dejándolo sin asignar, de esa forma, se usará el servidor de correo que haya en el equipo donde está alojado tu sitio Web.

 

Nos vemos.
Guillermo


Ir al indice principal de el Guille