Antonio:

                Gracias por las molestias, perfecto el código y se supone que 
funcione pero sigue igual, ahora pregunto: ¿debe el server de correo tener 
alguna configuración determinada para aceptar este tipo de envíos? 

 

Nota: Le estoy pasando mis credenciales del dominio, no se que pasa :S...

 

Saludos,

Raynier Rivero Mayo

Informático Oficina Central | Sucursal Matanzas

Ave. Playa e/ 39 y 40, Varadero

Teléfono: 66-8880 | Beeper: 3035

Correo: [EMAIL PROTECTED] 

 

De: [email protected] [mailto:[EMAIL PROTECTED] En nombre de Antonino Ferrando
Enviado el: martes, 27 de febrero de 2007 12:28
Para: [email protected]
Asunto: [puntonet] System.Net.Mail

 

Si Ray, no hay problema, he aquí varias páginas que encontre que pueden serte 
útiles:

 

Avisame cualquier cosa te busco otros.

Saludos

 

Enviar correo con ASP.NET 2.0

En este artículo te explico como enviar un correo desde una pagina de ASP.NET 
(.aspx) usando las clases de System.Net.Mail que son nuevas en la versión 2.0 
de .NET Framework.

  _____  

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

 

  _____  

Enviar correo desde una página ASPX usando ASP.NET v2.0

En este artículo vamos a ver cómo enviar correos desde páginas de ASP.NET 
(.aspx), usando las clases del espacio de nombres System.Net.Mail, que son 
nuevas para la versión 2.0 de .NET Framework.
De ese espacio de nombres usaremos tres 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 indicar el que envía el mensaje, 
tendremos que usar un objeto del tipo MailAddress, el cual lo asignaremos a la 
propiedad From de la clase MailMessage. Para enviar el mensaje usaremos un 
objeto del tipo SmtpClient, que a diferencia de ASP.NET 1.x no tiene métodos 
estáticos (compartidos), por tanto tendremos que crear una nueva instancia de 
esa clase y asignar los valores apropiados para poder mandar el mensaje, ahora 
veremos como hacerlo, además de ver otras cosas que en el equivalente de la 
versión 1.x no existen.

Estas clases solamente se pueden usar con la versión 2.0 de .NET Framework, si 
te interesa saber cómo enviar correos desde una aplicación creada con la 
versión 1.x de ASP.NET, mira este otro artículo: Enviar correo con ASP.NET v1.x 
<http://www.elguille.info/NET/ASPNET/enviar_correo_ASPNET_v1.htm> 

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 
<http://www.elguille.info/NET/ASPNET/enviarcorreoASP.htm> .

 

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 del 
espacio de nombres System.Net.Mail, 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.

Aunque como veremos, la forma de hacerlo difiere "un poco" a como se hacía en 
las versiones anteriores, al menos en lo que se refiere a los valores de las 
propiedades From y To.

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.

Lo primero es crear el objeto del tipo MailMessage:

Dim correo As New System.Net.Mail.MailMessage

System.Net.Mail.MailMessage correo = new System.Net.Mail.MailMessage();

A continuación asignamos las propiedades usando los valores de las cajas de 
texto que tendrá nuestro WebForm (formulario Web). Como comprobarás, para 
asignar el valor del correo que envía el mensaje, usamos un objeto del tipo 
MailAddress, ya que la propiedad From es de ese tipo y por tanto no acepta una 
cadena de texto. En el caso de la cuenta To, es decir, a quién va dirigido el 
mensaje, en realidad es una colección de tipo MailAddressCollection, por lo que 
podemos deducir que en realidad se pueden asignar varias direcciones de correo, 
tantas como necesitemos indicar para mandar el mismo mensaje a todas ellas, 
pero no te asustes, como puedes ver a continuación es fácil asignar esas 
cuentas de correo.
Veamos el código para Visual Basic y para C#:

correo.From = New System.Net.Mail.MailAddress(txtDe.Text)

correo.To.Add(txtPara.Text)

correo.Subject = txtAsunto.Text

correo.Body = txtTexto.Text

correo.IsBodyHtml = False

correo.Priority = System.Net.Mail.MailPriority.Normal

 

correo.From = new System.Net.Mail.MailAddress(txtDe.Text);

correo.To.Add(txtPara.Text);

correo.Subject = txtAsunto.Text;

correo.Body = txtTexto.Text;

correo.IsBodyHtml = false;

correo.Priority = System.Net.Mail.MailPriority.Normal;

Como puedes ver, el que envía el mensaje, (propiedad From), hay que indicarlo 
asignándole un objeto del tipo MailAddress, en este caso, lo creamos 
directamente y ese nuevo objeto es el que asignamos a la propiedad From.
También te comentaba que el o los destinatarios había que asignarlo a la 
propiedad To, que es una colección del tipo MailAddressCollection, y como en 
cualquier colección, cada nuevo elemento lo añadimos usando el método Add de la 
colección, en este caso, los elementos son cadenas con la dirección de correo 
de los destinatarios. En nuestro caso, solo hay uno, el que esté indicado en la 
caja de textos txtPara.

 

Una vez que ya tenemos el objeto del mensaje creado, tenemos que enviarlo, para 
ello usaremos una instancia de la clase SmtpClient de la que usaremos tres 
propiedades: Host a la que le indicaremos el nombre del 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.

Dim smtp As New System.Net.Mail.SmtpClient

smtp.Host = "servidor de correo"

System.Net.Mail.SmtpClient smtp = new System.Net.Mail.SmtpClient();

smtp.Host = "servidor de correo";

 

Si el servidor de correo necesita autenticación, podemos hacerlo mediante un 
objeto del tipo NetworkCredential, en el que indicaremos el nombre del usuario 
y la clave, ese objeto lo asignaremos a la propiedad Credentials del objeto 
SmtpClient que acabamos de crear.

smtp.Credentials = New System.Net.NetworkCredential("usuario", "password")

smtp.Credentials = new System.Net.NetworkCredential("usuario", "password");

 

Por último, nos queda la parte más importante: enviar el mensaje. Para ello 
usaremos el método Send del objeto creado a partir de la clase SmtpClient, al 
que le pasaremos el objeto de tipo MailMessage que hemos creado al principio.
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

    smtp.Send(correo)

    LabelError.Text = "Mensaje enviado satisfactoriamente"

Catch ex As Exception

    LabelError.Text = "ERROR: " & ex.Message

End Try

try

{

    smtp.Send(correo);

    LabelError.Text = "Mensaje enviado satisfactoriamente";

}

catch(Exception ex)

{

    LabelError.Text = "ERROR: " + ex.Message;

}

 

 

Y esto es todo...

 

Nos vemos.
Guillermo

P.S.
23/Dic/2006:

 

---------------------------------------------------------------------------------------------------------------------------------------

 


Enviar mails usando un servidor SMTP que requiere autenticación desde .NET 
Framework 1.1 


Si estamos usando .NET Framework 1.0 estaremos en desgracia porque no hay forma 
directa de hacerlo usando simplemente el Framework.

Si estamos usando .NET Framework 2.0 debemos pasar de lo siguiente que os voy a 
contar y usar el nuevo namespace System.Net.Mail.

Pero desde el .NET Framework 1.1, usando la propiedad Fields de MailMessage 
podemos acceder a los campos de CDO.Message. He aquí cómo:

public void EnviarMail()
{
    MailMessage mail = new MailMessage();
    mail.To = "[EMAIL PROTECTED]";
    mail.From = "[EMAIL PROTECTED]";
    mail.Subject = "Hazme casito, soy un mensajito";
    mail.Body = "Texto rollo que aburre";
    
mail.Fields.Add("http://schemas.microsoft.com/cdo/configuration/smtpauthenticate";,
 "1");  // Autenticacib
    
mail.Fields.Add("http://schemas.microsoft.com/cdo/configuration/sendusername";, 
"usuario");   // Nombre de usuario
    
mail.Fields.Add("http://schemas.microsoft.com/cdo/configuration/sendpassword";, 
"password");  // Contrase

    SmtpMail.SmtpServer = "mail.plainconcepts.com";  // Aquí va tu servidor de 
SMTP real
    SmtpMail.Send(mail);
}

 

 

 

 

 

 

 

 

 

 

 

 

 

 

AVISO LEGAL
La información contenida en este mensaje, y en cualquier archivo asociado al 
mismo, es confidencial y está destinada exclusivamente a su destinatario. Si 
usted no lo es, y por error lo ha recibido, por favor reenvíelo a su emisor 
indicando tal situación y luego elimínelo. 
La distribución, reproducción o copia de lo arriba expresado está prohibida y 
corresponden a su autor. No debe interpretarse que pertenezcan o sean 
compartidas por Jerárquicos Salud, quien no se responsabiliza por errores u 
omisiones producidas, ni garantiza la certeza de lo transmitido por este medio 
debido a que puede ser objeto de interpretación, alteración, demora, contener 
virus u otras anomalías.

Responder a