Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Internet
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 11-08-2013
Avatar de linuz
linuz linuz is offline
Miembro
 
Registrado: sep 2004
Posts: 88
Poder: 20
linuz Va por buen camino
Lazarus, Indy 10 y gmail.

Buenas a todos,
sé que aquí se habla de Delphi, pero como existe tanta similitud con lázarus pues a ver si alguien puede ayudarme.
Llevo una semana intentando mandar emails con los componentes de Indy 10, el caso es que con un correo con cifrado SSL de pago me manda los emails, pero al pasarle los datos de gmail me da un error al enviar. El error es con STARTTLS, que no se puede iniciar. Tengo las dll's en la carpeta del ejecutable. He cambiado 20 mil cosas, he buscado por el foro, me he bajado el ejemplo de Roman de como enviar emails, y no hay forma.
Gracias de antemano.
Un saludo.
Os dejo el código de la función:

Código Delphi [-]
procedure EnviarMensaje( sUsuario, sClave, sHost, sAdjunto, sAsunto, sDestino, sMensaje: String );
var
   Mensaje: TIdMessage;
   Adjunto: TIdAttachmentfile;
begin
  // Creamos el componente de conexión con el servidor
       with F1 do
begin
  SMTP := TIdSMTP.Create( nil );
  SMTP.Username := sUsuario;
  SMTP.Password := sClave;
  SMTP.Host := sHost;
  SMTP.Port := 587;
  //SMTP.UseTLS:= 'utNoTLSSupport' ;
     IdSSLOpenSSLHeaders.Load;
  IdSSLIOHandlerSocketOpenSSL1.Destination := 'smtp.gmail.com:587';
    IdSSLIOHandlerSocketOpenSSL1.host := 'smtp.gmail.com';
    IdSSLIOHandlerSocketOpenSSL1.port := 587;
    IdSSLIOHandlerSocketOpenSSL1.ssloptions.method := sslvSSLv3;
    IdSSLIOHandlerSocketOpenSSL1.ssloptions.mode := sslmUnassigned;
 
  end;
 // SMTP.IOHandler := f1.IdSSLIOHandlerSocketOpenSSL1;
 // SMTP.AuthType:= atDefault;
  // Creamos el contenido del mensaje
  Mensaje := TIdMessage.Create( nil );
  Mensaje.Clear;
  Mensaje.From.Name := sDestino;
  Mensaje.From.Address := sDestino;
  Mensaje.Subject := sAsunto;
  Mensaje.Body.Text := sMensaje;
  Mensaje.Recipients.Add;
  Mensaje.Recipients.Items[0].Address := sDestino;
  // Si hay que meter un archivo adjunto lo creamos y lo asignamos al mensaje
  if sAdjunto <> '' then
  begin
    if FileExists( sAdjunto ) then
      Adjunto := TIdAttachmentfile.Create( Mensaje.MessageParts,sAdjunto );
  end
  else
    Adjunto := nil;
  // Conectamos con el servidor SMTP
  try
    if f1.SMTP.Connected then
    f1.SMTP.Disconnect;
    f1.SMTP.Connect;
  except
    raise Exception.Create( 'Error al conectar con el servidor.' );
  end;
  // Si ha conectado enviamos el mensaje y desconectamos
  if f1.SMTP.Connected then
  begin
    try
 
      f1.SMTP.Send( Mensaje );
    except
      raise Exception.Create( 'Error al enviar el mensaje.' );
    end;
    try
      f1.SMTP.Disconnect;
    except
      raise Exception.Create( 'Error al desconectar del servidor.' );
    end;
  end;
  // Liberamos los objetos creados
  if Adjunto <> nil then
    FreeAndNil( Adjunto );
  FreeAndNil( Mensaje );
  FreeAndNil( f1.SMTP );          
end;

Última edición por Ñuño Martínez fecha: 14-08-2013 a las 12:11:13. Razón: Corrigiendo formateo del código Delphi (¿Vuelve a fallar el add-on?)
Responder Con Cita
  #2  
Antiguo 14-08-2013
Avatar de Ñuño Martínez
Ñuño Martínez Ñuño Martínez is offline
Moderador
 
Registrado: jul 2006
Ubicación: Ciudad Catedral, Españistán
Posts: 6.000
Poder: 25
Ñuño Martínez Tiene un aura espectacularÑuño Martínez Tiene un aura espectacular
Ya ves que he editado tu mensaje, porque el código no salía correctamente formateado. No problemo.

Respecto a lo de Delphi y Lazarus, aquí también hablamos de este último, así como de Free Pascal, Oxygene, Smart Mobile Studio y cualquer otro compilador de Pascal o similares, así que tampoco problemo.

Y ahora, al turrón.

No he enviado nunca correos usando Delphi, pero yo probaría a enviarlo primero sin codificar y sin adjunto, a ver si el problema no es el SSL. Luego, SSL necesita estar bien instalado y configurado (al menos en Linux, que en Windows nunca lo he usado) y cuando lo he necesitado yo me ha costado bastante. O sea, que tener los archivos DLL ahí al lado muchas veces no es suficiente, sino que necesita un archivo de configuración con los parámetros precisos (que si firmas, que si permisos...). Si puedes, consulta con un sysadmin, que estos suelen saber bastante.
__________________
Proyectos actuales --> Allegro 5 Pascal ¡y Delphi!|MinGRo Game Engine
Responder Con Cita
  #3  
Antiguo 15-08-2013
Avatar de linuz
linuz linuz is offline
Miembro
 
Registrado: sep 2004
Posts: 88
Poder: 20
linuz Va por buen camino
Gracias por la respuesta ÑuÑo.
He quitado el cifrado y el adjunto, pero me sigue dando el mismo error.
Estos errores que "no" puedo controlar son los que me ponen nervioso. Estoy acabando un proyecto para una clínica y casi está listo, y el módulo de sms e emails son lo que me están dando problemas.
¿Hay alguna alternativa a Indy para mandar emails?

Gracias por todo!!!!

Un saludo.
Responder Con Cita
  #4  
Antiguo 15-08-2013
Avatar de rretamar
[rretamar] rretamar is offline
Miembro Premium
 
Registrado: ago 2006
Ubicación: San Francisco, Córdoba, Argentina
Posts: 1.168
Poder: 20
rretamar Va camino a la famarretamar Va camino a la fama
Tengo implementado el envío por Gmail usando Indy. Esta tarde cuando esté en mi trabajo copio el código y lo pego aquí. Funciona sin problemas. Eso sí, junto con la aplicación hacen falta distribuir unas bibliotecas de cifrado SSL.
__________________
Lazarus Codetyphon : Desarrollo de aplicaciones Object Pascal, libre y multiplataforma.
Responder Con Cita
  #5  
Antiguo 15-08-2013
Avatar de linuz
linuz linuz is offline
Miembro
 
Registrado: sep 2004
Posts: 88
Poder: 20
linuz Va por buen camino
Cita:
Empezado por rretamar Ver Mensaje
Tengo implementado el envío por Gmail usando Indy. Esta tarde cuando esté en mi trabajo copio el código y lo pego aquí. Funciona sin problemas. Eso sí, junto con la aplicación hacen falta distribuir unas bibliotecas de cifrado SSL.
Gracias rretamar, toda ayuda es bienvenida.

Un saludo.
Responder Con Cita
  #6  
Antiguo 16-08-2013
Avatar de rretamar
[rretamar] rretamar is offline
Miembro Premium
 
Registrado: ago 2006
Ubicación: San Francisco, Córdoba, Argentina
Posts: 1.168
Poder: 20
rretamar Va camino a la famarretamar Va camino a la fama
Te envío el código fuente de toda la aplicación (es un programa muy simple -y el código fuente es bastante "sucio"- que permite consultar el estado de una base de datos, mostrando una alarma si no se encontraron nuevos registros. La alarma se ve en el monitor y opcionalmente se envía un correo-e). Junto al ejecutable se deben distribuir dos bibliotecas para la encriptación SSL que podrás encontrar en el mismo directorio de las fuentes. El envío de correo-e lo hago desde el archivo PRINCIPAL.PAS

Para envío por Gmail uso los siguientes parámetros:

- Servidor SMTP: smtp.gmail.com
- Usuario: nombre@gmail.com
- Port: 465
- Usar TSL

En el código fuente podrás ver cómo hago el envío y en los formularios están las propiedades de los componentes.

http://www.sendspace.com/file/0fxx92

Espero que te sirva. Está escrito y compilado en Delphi 2007 (utilizando los componentes JEDI, lo que ahora veo como un error, ya que son muy dependientes de Windows), que actualmente no utilizo más, porque lo reemplacé por Lazarus.
__________________
Lazarus Codetyphon : Desarrollo de aplicaciones Object Pascal, libre y multiplataforma.

Última edición por rretamar fecha: 16-08-2013 a las 14:43:15.
Responder Con Cita
  #7  
Antiguo 16-08-2013
Avatar de linuz
linuz linuz is offline
Miembro
 
Registrado: sep 2004
Posts: 88
Poder: 20
linuz Va por buen camino
Cita:
Empezado por rretamar Ver Mensaje
Te envío el código fuente de toda la aplicación (es un programa muy simple -y el código fuente es bastante "sucio"- que permite consultar el estado de una base de datos, mostrando una alarma si no se encontraron nuevos registros. La alarma se ve en el monitor y opcionalmente se envía un correo-e). Junto al ejecutable se deben distribuir dos bibliotecas para la encriptación SSL que podrás encontrar en el mismo directorio de las fuentes. El envío de correo-e lo hago desde el archivo PRINCIPAL.PAS

Para envío por Gmail uso los siguientes parámetros:

- Servidor SMTP: smtp.gmail.com
- Usuario: nombre@gmail.com
- Port: 465
- Usar TSL

En el código fuente podrás ver cómo hago el envío y en los formularios están las propiedades de los componentes.

http://www.sendspace.com/file/0fxx92

Espero que te sirva. Está escrito y compilado en Delphi 2007 (utilizando los componentes JEDI, lo que ahora veo como un error, ya que son muy dependientes de Windows), que actualmente no utilizo más, porque lo reemplacé por Lazarus.
Gracias rretamar!!!!

Ahora consigo conectar, pero a la hora de enviar el mail se queda literalmente muerto.
Ya no sé si es por el ssl o por otra cosa
Aaaahh!!! Esto es desesperante!!! He quitado el antivirus por si acaso, he desactivado el firewall de Windows, he cargado el proyecto en otro equipo..... y no va.

Gracias por la ayuda. Si se os ocurre algo más os escucharé encantados.
Un saludo.

EDITO: Lo curioso es que si pongo un usuario que no existe o la contraseña no es correcta, ¡¡se conecta igualmente!!, debería de dar la excepción, ¿no?.

Última edición por linuz fecha: 16-08-2013 a las 16:37:59.
Responder Con Cita
  #8  
Antiguo 16-08-2013
Avatar de linuz
linuz linuz is offline
Miembro
 
Registrado: sep 2004
Posts: 88
Poder: 20
linuz Va por buen camino
Hola de nuevo,

¡¡¡ Ya lo he solucionado !!!

El problema estaba en el firewall de la empresa .
Se quedaban muertos ahí y lazarus se volvía loco.
Muchas gracias por la ayuda.
Espero seros de ayuda en algún momento.

Un saludo.
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Enviar Email con Indy 10 y GMail ssl camino Internet 7 01-10-2012 21:58:25
GMail, Delphi 6, Indy 10.5.8.0, SSL y otras hierbas Cabanyaler Internet 7 16-03-2012 10:22:17
Enviar mensaje desde gmail con Indy 10 axelafonso Internet 3 13-01-2012 18:11:39
Imap de indy + gmail Enan0 Internet 0 10-02-2010 08:35:02
Enviar correo con SMTP de GMAIL via INDY 10 (idSMTP) lpedrazzi Internet 4 31-12-2006 22:30:26


La franja horaria es GMT +2. Ahora son las 01:18:47.


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
Copyright 1996-2007 Club Delphi