¿Cómo mandar correo vía SMTP?

Como estas, me podrías explicar como hacer un programa en visual basic 5 que mande mail vía smtp, es bien simple, es un formulario con 2 casillas de texto que pregunten nombre y edad, y que cuando pulsen el botón enviar, los datos sena enviados a mi correo electrónico.
¿Me ayudarías?
2

2 respuestas

Respuesta
1
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í:
HELÓ
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:<[email protected]>" & vbcrlf
' Esperar hasta recibir el 250 o un tiempo estipulado
winsock1.senddata "RCPT TO:<[email protected]>" & 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.
ahhhhh ok ok, pero no comprendo por que no puedo mandar correos vía 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 exprés, 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 así de, relay not alowed, una cosa aso.
Te agradecería tu respuesta.
Igual muchas gracias por la primera respuesta porque me aclaraste varias dudas acerca del funcionamiento del protocolo smtp.
Te agradecería que respondieras mi nueva interrogante.
Muchas gracias
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.
Respuesta
1
Primero perdona por haber tardado tanto en responder, pero no he tenido ocasión de hacerlo antes.
Nunca he usado eso de SMTP, pero mirando por internet he visto este artículo que lo explica paso a paso, y para Visual Basic 5:
http://www.developersdomain.com/vb/articles/smtp.htm
Por lo que veo está utilizando un objeto WinSock, por lo que quizás requiera que la maquina donde vaya a estar funcionando la aplicación lo tenga instalado. En el ejemplo define un par de funciones para poder enviar el mail de forma sencilla. Quizás te sea suficiente copiar todo y utilizarla tu (aunque el poner el objeto WinSock en el formulario es cosa tuya).
O quizás prefieras mirar el código e intentar hacerlo por tus propios medios con una función personalizada.
Te paso otra URL sobre el mismo tema:
http://www.tair.freeservers.com/vb/smtp.html
Aquí tienes un foro de preguntas/respuestas en el que hay un par de ejemplo usando el objeto CDONTS (se usa normalmente en servidores web Windows NT/2000 para el envío de mail desde páginas web):
http://www.experts-exchange.com/Programming/Programming_Languages/Visual_Basic/Q_11016941.html
Espero tengas información suficiente. Si lo hubiese hecho alguna vez te podría haber explicado como lo hice, pero ... nunca he hecho eso.
Suerte.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas