Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Internet (https://www.clubdelphi.com/foros/forumdisplay.php?f=3)
-   -   Conectar al servidor smtp con componentes INDY (https://www.clubdelphi.com/foros/showthread.php?t=72326)

cincosoft 10-02-2011 20:41:06

Conectar al servidor smtp con componentes INDY
 
Hola,

Estoy intentando enviar correo desde una pantalla y al intentar la conexión me da el siguiente error:

...raised exception class EIdSocketError with message 'Socket Error # 11001 Host not found,', Process stopped.....

El código es el siguiente:

Código Delphi [-]
procedure TFRMListados.EnviarMensaje(sUsuario, sClave, SHost, sAdjunto,
  sAsunto, sDestino, sMensaje: String; sPort : Integer);
var
  smtp : TIdSMTP;
begin
  //Creamos los componentes de conexión con el servidor
  smtp := TIdSMTP.Create(nil);
  smtp.Username := '[email protected]';
  smtp.Password := 'miclave';
  smtp.Host := 'smtp.gmail.com';
  smtp.Port := 25;
  smtp.AuthenticationType := atLogin;

  smtp.Connect;  -- Linea que da el error

También probé con el puerto 465.

Muchas gracias.

newtron 12-02-2011 11:03:35

Por alguna extraña razón hay servidores de correos con las que la conexión falla y gmail es una de ellas, prueba con otro servidor de correo, yahoo por ejemplo.

Igual alguien sabe decirnos porque unos servidores conectan y otros no.

Saludos

Enan0 15-02-2011 14:14:29

el problema con Gmail es:
1) que no utiliza el puerto 25
2) Utiliza SSL

Si verificas los Los hilos hay subido un ejemplo de como enviar y recibir correos utilizando INDY 10

Este es uno de ellos

Ejemplo

pacopenin 15-02-2011 17:39:13

Hola.

Yo no uso Indy, sino synapse y el siguiente ejemplo a mi me funciona bien :

Código Delphi [-]
procedure MailSend(const sSmtpHost, sSmtpPort, sSmtpUser, sSmtpPasswd, sFrom, sTo, sFileName: AnsiString);
var
  smtp: TSMTPSend;
begin
  smtp := TSMTPSend.Create;
  try
    smtp.UserName := sSmtpUser;
    smtp.Password := sSmtpPasswd;
 
    smtp.TargetHost := sSmtpHost;
    smtp.TargetPort := sSmtpPort;
 
    smtp.AutoTLS := true;
 
    if not smtp.Login() then
      raise ESMTP.Create('SMTP ERROR: Login:' + smtp.EnhCodeString);
 
    if not smtp.MailFrom(sFrom, Length(sFrom)) then
      raise ESMTP.Create('SMTP ERROR: MailFrom:' + smtp.EnhCodeString);
    if not smtp.MailTo(sTo) then
      raise ESMTP.Create('SMTP ERROR: MailTo:' + smtp.EnhCodeString);
    if not smtp.MailData(msg_lines) then
      raise ESMTP.Create('SMTP ERROR: MailData:' + smtp.EnhCodeString);
 
    if not smtp.Logout() then
      raise ESMTP.Create('SMTP ERROR: Logout:' + smtp.EnhCodeString);
  finally
    smtp.Free;
  end;
end;
 
procedure TForm1.Button2Click(Sender: TObject);
begin
 MailSend('smtp.gmail.com', '587', '[email protected]', 'password', '[email protected]', '[email protected]', 'test.txt');
//
end;


Saludos,

newtron 15-02-2011 17:52:31

Cita:

Empezado por Enan0 (Mensaje 390988)
el problema con Gmail es:
1) que no utiliza el puerto 25
2) Utiliza SSL

Si verificas los Los hilos hay subido un ejemplo de como enviar y recibir correos utilizando INDY 10

Este es uno de ellos

Ejemplo

Es una tontería pero al compilar el ejemplo que me indicas me da error en la linea:

IdIMAP41.AuthType :=iatUserPass;

qué hay que añadir al uses para que se trague iatUserPass ?

Gracias y un saludo


La franja horaria es GMT +2. Ahora son las 05:23:27.

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