SMTP y C++

Temas relacionados con la programación de aplicaciones que funcionan sobre un servidor.
Responder
Mensaje
Autor
Avatar de Usuario
eagleoneraptor
Mensajes: 187
Registrado: 20/05/2008 10:24 am
Ubicación: Buenos Aires(Argentina)

SMTP y C++

#1 Mensaje por eagleoneraptor » 09/01/2009 5:28 am

Hola, quisiera saber como conectarme a un servidor de correo SMTP (como el de GMail) y mandar mails con mi cuenta desde C++, tengo entendido que el protocolo SMTP trabaja mediante comandos, pero tengo dudas de como implementarlo en C++.
No se si se usan sockets para conectarse o debo usar alguna librería no estandar para SMTP.

Me vendría bien cualquier tipo de orientación, como para empezar.

PD: también quisiera saber para que se puede usar el protocolo POP3 ¿o es solo una alternativa a SMTP que dan algunos servidores?
Un Saludo!
"Aquel que hace una bestia de si mismo se libra del dolor de ser un hombre". Dr. Johnson

Avatar de Usuario
cheroky
Mensajes: 2571
Registrado: 22/09/2005 11:00 pm
Ubicación: Valladolid (España)

#2 Mensaje por cheroky » 09/01/2009 1:49 pm

eagleoneraptor escribió:Hola, quisiera saber como conectarme a un servidor de correo SMTP (como el de GMail) y mandar mails con mi cuenta desde C++, tengo entendido que el protocolo SMTP trabaja mediante comandos, pero tengo dudas de como implementarlo en C++.
Tendras que usar las secuencias que se especifican en el RFC821.
eagleoneraptor escribió:No se si se usan sockets para conectarse o debo usar alguna librería no estandar para SMTP
No hay estándar ya que C++ no tiene concepto de sockets. Hay librerías de terceros que te abstraen de las labores mas crudas, conexión, negociado, control de excepciones, etc. Es cuestión de buscar.
Yo utilizaria BSD sockets, (el cuasiestandar, los sockets de siempre).
Podrías implementar una clase o jerarquía de ellas que haga las labores de creación del socket, conexión y sesión , y otra para todo el tema de cadenas con el formato requerido.
eagleoneraptor escribió:PD: también quisiera saber para que se puede usar el protocolo POP3 ¿o es solo una alternativa a SMTP que dan algunos servidores?
Son protocolos distintos, SMPT, envía correo, POP lo recupera del servidor, el documento que especifica el protocolo POP es el RFC-1939.

*EOF*
Imagen

Avatar de Usuario
eagleoneraptor
Mensajes: 187
Registrado: 20/05/2008 10:24 am
Ubicación: Buenos Aires(Argentina)

#3 Mensaje por eagleoneraptor » 09/01/2009 2:08 pm

En realidad mi duda no es sobre la sintaxis o los comandos SMTP, sino como llevarlo a cabo en C++, ¿me conecto con sockets al servidor y le envío los comandos o es de otra forma?

Necesito saber eso, así puedo empezar.

Un Saludo!
"Aquel que hace una bestia de si mismo se libra del dolor de ser un hombre". Dr. Johnson

Avatar de Usuario
cheroky
Mensajes: 2571
Registrado: 22/09/2005 11:00 pm
Ubicación: Valladolid (España)

#4 Mensaje por cheroky » 09/01/2009 8:43 pm

Necesitas habilitar un socket TCP al puerto del servidor SMPT, una vez realizada la conexión se establece un protocolo de sesión y presentación (layer 7) el que se especifique en el RFC. Esto lo haces mediante la pareja de funciones send y recv.

Una opción para saber en grosso modo como se realiza la parte de la sesión y presentacion es intentar hacerlo manualmente mediante telnet, netcat, o similares.

Si el problema es la implementación del socket en C++, concretala.

*EOF*
Imagen

Avatar de Usuario
eagleoneraptor
Mensajes: 187
Registrado: 20/05/2008 10:24 am
Ubicación: Buenos Aires(Argentina)

#5 Mensaje por eagleoneraptor » 11/01/2009 7:38 am

Gracias eso necesitaba confirmar.

Un Saludo!
"Aquel que hace una bestia de si mismo se libra del dolor de ser un hombre". Dr. Johnson

Avatar de Usuario
eagleoneraptor
Mensajes: 187
Registrado: 20/05/2008 10:24 am
Ubicación: Buenos Aires(Argentina)

#6 Mensaje por eagleoneraptor » 14/01/2009 12:50 pm

Bueno, pude hacer un programa con sockets TCP e iniciar sesión en un servidor SMTP, ahora me faltaría saber algo sobre SSL o TSL que lo requiere GMail para funcionar, me gustaría que alguien me explique como funciona y como implementarlo.

PD: si su respuesta es que lea el RFC correspondiente, no se molesten en contestar, porque el caso es que me cuesta mucho comprenderlo desde esa fuente.

Un Saludo!
"Aquel que hace una bestia de si mismo se libra del dolor de ser un hombre". Dr. Johnson

Responder

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 2 invitados