Inicio > Visual Basic > citef > como mandar correo via SMTP?

como mandar correo via SMTP?

Experto:
Usuario:
Fecha: 24/05/2003
Valoración: (5,00 sobre 5) Categoría: Visual Basic
22/05/2003
kommodore, usuario preguntando en Visual Basic
Usuario
hola como estas, me podrias explicar como hacer un programa en visual basic 5 que mande mail via smtp, es bien simple, es un formulario con 2 casillas de texto que pregunten nombre y edad, y que cuando pulsen el boton enviar, los datos sena enviados a mi correo electronico.

me ayudarias??

desde ya muchas gracias
23/05/2003
kommodore, experto respondiendo en Visual Basic
Experto
Hola:

Para enviar correo sólo necesitas usar el control Winsock y conocer el protocolo SMTP. Este está descrito en la RFC821 que puedes localizar en http://www.ietf.org.

Básicamente, has de enviar las órdenes indicadas en a RFC821 por el puerto 25 y comprobar los retornos en el evento DataArrival del control Winsock. A grandes rasgos es algo así:

' Conectar al servidor smtp
Winsock1.RemotePort = 25
Winsock1.RemoteHost = "smtp.micorreo.es" ' El que tengas
Winsock1.Connect

El protocolo SMTP indica que la conversación es, más o menos así:

HELO
MAIL FROM
RCPT TO
DATA
QUIT

La secuencia, simplificada y usando el winsock es:

winsock1.senddata "HELO prueba" & vbcrlf
' Esperar hasta que se recibe una línea (evento dataarrival del winsock) que comience por 250
winsock1.senddata "MAIL FROM:<yo@micorreo.es>" & vbcrlf
' Esperar hasta recibir el 250 o un tiempo estipulado
winsock1.senddata "RCPT TO:<lavictima@sucorreo.es>" & vbcrlf
' Esperar nuevamente el 250 o el tiempo estipulado
winsock1.senddata "DATA" & vbcrlf
' Aquí hay que esperar una respuesta 354 o el tiempo estipulado
' Una vez recibido el 354 se envía el texto del correo con sucesivos
winsock1.senddata "texto del correo" & vbcrlf
' Para indicar que se ha terminado de enviar el texto del correo se envia una línea que sólo contenga un punto
winsock1.senddata "." & vbcrlf
' Si todo va bien se recibe una respuesta 250
' Y finalmente se termina la sesión con el servidor con:
winsock1.senddata "QUIT" & vbcrlf
' De nuevo se ha de recibir un 250

En cualquiera de los casos si pasa el tiempo estipulado (que has de decidir tú) se ha de cancelar el proceso y cerrar el winsock para evitar dejar recursos en uso.

Espero que te sirva y me puntúes bien :-)
23/05/2003
kommodore, usuario preguntando en Visual Basic
Usuario
ahhhhh ok ok, pero no comprendo por que no puedo mandar correos via smtp a hotmail o a cualquier otro tipo de correo como latinmail etc, solamente me funciona para enviarlo al correo de mi casa que es @terra.cl, y es el que utilizo con el outlook expres, pero cuando mando correos a mi cuenta de hotmail, no me llegan, y cundo mando a mi cuenta de latinmail tampoco me llegan, el status dice algo asi de, relay not alowed, una cosa aso.

te agradeceria tu respuesta.

igual muchas gracias por la primera respuesta pòrque me aclaraste varias dudas acerca del funcionamiento del protocolo smtp.

te agradeceria que respondieras mi nueva interrogante.

muchas gracias
24/05/2003
kommodore, experto respondiendo en Visual Basic
Experto
Hola:

Lo que sucede es que la mayoría de cuentas de correo webmail como hotmail no permiten usar el servidor SMTP. La que sí que lo permite es YAHOO.ES que te obliga a suscribirte en no recuerdo que tontería, pero una vez suscrito puedes usarla igual que una cuenta normal.

Saludos.
24/05/2003
kommodore, usuario preguntando en Visual Basic
Usuario
ah ok ok, ahora me queda mas claro.

muchas gracias por tu ayuda
Enlaces patrocinados