Mandar email

Hola,
me gustaría saber si es posible el poder mandar emails sin tener ningún "programa" tipo outlook o notes instalado en el PC, los ordenadores están conectados en red, pero unos cuantos no pueden tener instalados servidores de correo y quiero que desde una aplicación VFP mande un email a otros pc que si que tienes outlook
1

1 respuesta

Respuesta
1
Lo único que tienes que hacer es abrir un socket en el cliente y seguir los pasos del RFC821 que es donde se especifican los pasos a seguir. Te los explico yo brevemente: En primer lugar, creas un socket y lo abres. Después haces un connect a un servidor de smtp (puerto TCP 25). Una vez conectado tienes que enviar la siguiente secuencia pero ten en cuenta que tras cada envío, el servidor de smtp contesta con un mensaje de confirmación o de error. Para mensajes simples, empieza enviando MAIL FROM: [email protected] + crlf Tras la respuesta, envía RCPT TO: [email protected] + crlf (este paso lo repites por cada uno de los destinatarios) Tras la confirmación envías DATA + crlf. Tras la respuesta del servidor envías ya el correo electrónico. Por ejemplo: From: Revolupo + crlf + Subject: Envío de correos desde código + crlf + Aquí tienes un ejemplo de envío de correo desde código. Espero que te sirva + crlf + . + crlf (el final del correo siempre es crlf + . + crlf) Tras la confirmación envías un QUIT + crlf y por último desconectas el socket. Sé que así parece complicado pero prueba a hacer un telnet al puerto 25 de un servidor de smtp y sigue estos pasos, verás los mensajes de confirmación y podrás depurar errores. Siento no explicarme mejor. P.D. Recuerda que en el RFC821 viene toda la especificación del protocolo smtp
Con algo de código, ademas te explico, esos pc's no tienen conexión a internet
En primer lugar, si no tienes conexión a Internet ni acceso a un servidor smtp local a tu red, no te sirve nada de lo que te conté y, realmente, no se me ocurre cómo podrías solucionarlo. Si por el contrario, tienes un servidor de smtp en tu red local, entonces te escribo los pasos en pseudocódigo porque no sé VFP.
s = create(Socket)
s.connect(DIR_IP_SMTP_SVR, puerto_25)
Comprobar que se ha conectado con éxito y si es así
s. Send('MAIL FROM: [email protected]' + crlf) //Esto envía especifica la dirección de origen
s. Recv(buffer)
Si buffer = '250 Ok ...' entonces siguiente-paso si no, error
s. Send('RCPT TO: [email protected]' + crlf) //Esto especifica la dirección destino. Recuerda que este paso lo puedes repitir tantas veces como destinatarios del correo tengas.
s.recv(buffer)
Si buffer = '250 Ok...' entonces siguiente paso si no error
s. Send('DATA' + crlf) //Esto especifica que vas a enviar el cuerpo del mensaje
s. Recv(buffer)
si buffer = '354 ....' entonces siguiente paso si no error
s.send('From: revolupo <[email protected]>' + crlf)
//aquí no se recibe nada
s.send('Subject: ejemplo' + crlf)
//aquí no se recibe nada
s.send('Resto del correo' + crlf)
//aquí no se recibe nada
s.send(crlf + '.' + crlf)
s.recv(buffer)
si buffer = '250 Ok...' entonces siguiente paso si no error
s.send('QUIT' + crlf)
s.recb(buffer)
si buffer = '221 ....' entonces siguiente paso si no error
s. Disconnect
destroy(s)
Te recomiendo que abras el telnet de windows.
Conectes al puerto 25 de algún servidor smtp
Y a continuación escribas las cadenas que he puesto en las líneas s.send('estas cadenas')
Verás los mensajes que te devuelve el servidor smtp. Por supuesto, pon direcciones de correo válidas. Espero haberte ayudado pero un código de ejemplo depende mucho del lenguaje, de cómo trata los sockets, de los eventos, etc. Te recomiendo lo del telnet, a mi me resultó muy útil

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas