Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Internet (https://www.clubdelphi.com/foros/forumdisplay.php?f=3)
-   -   Ayuda con SMTP (https://www.clubdelphi.com/foros/showthread.php?t=11404)

SonGoten 12-06-2004 22:40:22

Ayuda con SMTP
 
Hola a todos, estoy realizando un programa para enviar correo electronico mediante comandos TCP. Me conecto al servidor y envio el correo, de hecho me llega a la cuenta, pero me llega sin remitente, sin asunto y sin texto dentro.

TCPClient.Connect;
continuar:=false;
while continuar=false do Application.ProcessMessages;
TCPClient.WriteLn('HELO '+ Form2.LabeledEdit3.Text);
Memo1.Lines.Add('--> '+'HELO '+ Form2.LabeledEdit3.Text);
Memo1.Lines.Add('');
continuar:=false;
while continuar=false do Application.ProcessMessages;
TCPClient.WriteLn('MAIL FROM:<'+ Form2.LabeledEdit1.Text+'>');
Memo1.Lines.Add('--> '+'MAIL FROM:<'+ Form2.LabeledEdit1.Text+'>');
Memo1.Lines.Add('');
continuar:=false;
while continuar=false do Application.ProcessMessages;
TCPClient.WriteLn('RCPT TO:<'+ Form2.LabeledEdit2.Text+'>');
Memo1.Lines.Add('--> '+'RCPT TO:<'+ Form2.LabeledEdit2.Text+'>');
Memo1.Lines.Add('');
continuar:=false;
while continuar=false do Application.ProcessMessages;
TCPClient.WriteLn('DATA');

Tras esto introduzco el texto, termino con el '.' y luego QUIT. Se os ocurre que le puede pasar?

Muchas gracias

Flores 13-06-2004 02:48:04

Hola SonGoten.
Por opinar; ¿has pensado en capturar las respuestas del servidor?, a lo mejor te aclara lo que está pasando.

jachguate 13-06-2004 06:05:08

Como bien opina flores... el envío de un mensaje no es un monólogo. El servidor está también enviando mensajes al cliente.

Por ejemplo, despues del envio del comando DATA debieras esperar recibir un mensaje 354 para iniciar el envío de los datos. Igual habrán varios 250's entre el [b]MAIL FROM, RCPT TO, etc.

Con respecto del subject, habrá que ver que estas enviando dentro de DATA para ver porque no lo está tomando en cuenta.

Hasta luego.

;)

SonGoten 13-06-2004 13:57:32

--------------------------------------------------------------------------------------------------------------------
Conectando con: smtp.ono.es Port: 25
Conexión establecida

220 mta02.onolab.com ESMTP Service (7.1.016.11) ready
--> HELO pc03.IT1.upct.es

250 mta02.onolab.com
--> MAIL FROM:<puesto03@ono.com>

250 MAIL FROM:<puesto03@ono.com> OK
--> RCPT TO:<jrosell@ono.com>

250 RCPT TO:<jrosell@ono.com> OK
--> DATA

354 Please start mail input.
--> Hola
--> Club Delphi r00lz!!!
--> Bye!
--> .
--> SEND FROM:<puesto03@ono.com>

--> QUIT
Desconexión de: smtp.ono.es Port: 25

Si os fijais me responde con 250, pero al recibirlo no me sale. Se supoine que hay q terminar todas los comandos con char(10) o char(13)? Es que creo q el problema tiene q ver con eso, con el retorno de carro al final del comando. Pero lo pongo y no lo reconoce.

Muchas gracias!

Flores 13-06-2004 16:04:00

Curiosidades
 
Hola.
Para repetir tu ejemplo (tambien tengo ONO) he seguido la guia por telnet que hay en: http://www.psicobyte.com/ppersonal/o...mtptelnet.html
y lo he mandado de mi cuenta a mi cuenta y tambien me envía el msg y llega sin asto, ni remitente ni cuerpo. El caso es que si veo el msg en http://www.onobox.com , visualizo el msg y le doy a mostrar encabezado me sale todo, incluso el texto en el encabezado.
Yo ahora mismo estoy desde fuera de la red de ONO (¿tu lo has echo desde dentro o desde fuera?) y creo que es por eso, que filtra las IP's o algo así he escuchado. Hasta el Lunes o el Martes no podré probar desde ONO, ya iré contando....

SonGoten 13-06-2004 16:34:46

Si, estoy desde dentro de ONO y me pasa lo mismo, si miro el codigo fuente del mensaje viene todo. Y la cuestión es que en el tutorial que has puesto pone lo mismo, no dice nada de los retornos de carro ni nada. No se que hacer :( .


Muchas gracias!

Flores 13-06-2004 16:59:27

¿ has probado con otro servidor?
 
Has probado con una cuenta de otro dominio, me refiero a una de Terra, Tiscali, Wanadoo...?
No sé pero igual al problema viene por el servidor smtp de correo. Lo he intentado con terra pero me pide autentificación de usuario a la hora de intentar transmitir un msg por telnet.
El caso que yo he estado haciendo pruebas con los componentes Indy enviando y recibiendo msg's desde mi cuenta de ONO y no tuve problemas, creo que en todo esto falta algo.

jachguate 14-06-2004 21:04:40

En que parte de tu DATA estas enviando el subject??

Porque el servidor no lo inventará :rolleyes: (perdon por el sarcasmo).

Te copio parte de un Example del rfc821:

Cita:

Empezado por rfc821(SMTP)
S: MAIL FROM:<@USC-ISIE.ARPA:JQP@MIT-AI.ARPA>
R: 250 OK

S: RCPT TO:<Jones@BBN-VAX.ARPA>
R: 250 OK

S: DATA
...
S: Date: 2 Nov 81 22:33:44
S: From: John Q. Public <JQP@MIT-AI.ARPA>
S: Subject: The Next Meeting of the Board
S: To: Jones@BBN-Vax.ARPA
S:
S: Bill:
S: The next meeting of the board of directors will be
S: on Tuesday.
S: John.
S: .
R: 250 OK


Flores 19-06-2004 20:39:01

En efecto, el problema estaba en que no diferenciaba la cabecera del cuerpo o texto del mensaje, para diferenciarlo por telnet es una linea en blanco. Por eso en onobox veía el texto dentro de la cabecera.

NeWNeO 07-07-2004 08:10:25

El Retorno de Carro
 
En cuanto a lo que tu preguntabas de usar el retorno de carro (chr(13)):

En Indy hay 2 tipos de comandos de escritura: Write y Writeln.
La diferencia fundamental entre ambas es que el writeln introduce un retorno de carro al final del texto que has introducido (para quitarte de trabajo) y el write no.

Ejemplo:

Código Delphi [-]
 IdTCPClient.Write('¡Hola!')
// El servidor recibe ('¡Hola!');
 IdTCPClient.Writeln('¡Hola!');
// El servidor recibe ('¡Hola!'+chr(13))

Saludidos :D


La franja horaria es GMT +2. Ahora son las 01:39:04.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi