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 15-09-2020
ArtPortEsp ArtPortEsp is offline
Miembro
 
Registrado: may 2018
Ubicación: Mexico
Posts: 151
Poder: 6
ArtPortEsp Va por buen camino
Detectar la configuración del servidor de correo

buen dia;

tengo una aplicación que puede enviar correos en Delphi 7 con los componentes Indy 10

al parecer la rutina funciona bien, pero cuando quiero configurar los parametros de conexion para cada cliente, tengo que pasar por un tedioso proceso de prueba y error para determinar la configuración correcta de:

IdSSLIOHandlerSocketOpenSSL1.SSLOptions.Method que puede ser:
sslvTLSv1
sslvSSLv2
sslvSSLv23
sslvSSLv3

o de TidSMTP.Authtype que puede ser:
atDefault
atNone
atSASL

y de TidSMTP.UseTSL que puede tener los sig valores:
utUseExplicitTLS
utNoTLSSupport
utUseExplicitTLS
utUseExplicitTLS

supongo que debe haber una mejor forma de configurar un cliente de correo (y que yo, por supuesto ignoro), alguna sugerencia?
Responder Con Cita
  #2  
Antiguo 16-09-2020
Garada Garada is offline
Miembro
 
Registrado: jul 2004
Posts: 66
Poder: 20
Garada Va por buen camino
Puedes probar a implementar el protocolo Autodiscover:
https://www.ionos.es/ayuda/dominios/.../autodiscover/

Compruebas primero si existe el registro en el dominio y si no pues pasas a tu sistema manual.

Desconozco si ya hay algún componente creado para Delphi pero, en teoría, no es complicado.
Es una consulta DNS a ver si existe el registro, si existe descargar el fichero que indica.
El fichero descargado es un XML con la información de configuración.
Responder Con Cita
  #3  
Antiguo 16-09-2020
ArtPortEsp ArtPortEsp is offline
Miembro
 
Registrado: may 2018
Ubicación: Mexico
Posts: 151
Poder: 6
ArtPortEsp Va por buen camino
hola, pues ahora ya no se que pasa, la aplicación ya no puede enviar correos con gmail, el código es el siguiente:

notas:
  • ya me asegure que la opcion de ALLOW LESS SECURE APPLICATIONS en Gmail estuviera activada
    en el programa principal incluyo las librerias
    Código:
                   xlinea:=ExtractFilePath(Application.ExeName);
                   if (not fileexists(xlinea+'\libeay32.dll')) or (not fileexists(xlinea+'\ssleay32.dll')) then
                   begin
                        MessageDlg('Las librerias SSL no estan presentes en la carpeta del ejecutable.'+#13+#10+''+#13+#10+'La capacidad de correo electronico del sistema no estara habilitada.', mtWarning, [mbOK], 0);
                        GVCORE := False;
                   end
                   else
                        IdSSLOpenSSLHeaders.Load;


Código:
          // Conexion con el servidor de correo
          ListBox2.Lines.clear;
          with SMTP do
          begin
               if Gemailmetodo = 'sslvTLSv1'  then IdSSLIOHandlerSocketOpenSSL1.SSLOptions.Method := sslvTLSv1;
               if Gemailmetodo = 'sslvTLSv2'  then IdSSLIOHandlerSocketOpenSSL1.SSLOptions.Method := sslvSSLv2;
               if Gemailmetodo = 'sslvTLSv23' then IdSSLIOHandlerSocketOpenSSL1.SSLOptions.Method := sslvSSLv23;
               if Gemailmetodo = 'sslvTLSv3'  then IdSSLIOHandlerSocketOpenSSL1.SSLOptions.Method := sslvSSLv3;

               IoHandler := IdSSLIOHandlerSocketOpenSSL1;

               // tipo de autenticacion
               if Gemailauth = 'Defecto' then AuthType := atDefault;
               if Gemailauth = 'Ninguna' then AuthType := atNone;
               if Gemailauth = 'SASL'    then AuthType := atSASL;


               //Si se requiere autenticación para el envío indicar usuario y contraseña
               Username := Gemailcuenta;
               Password := Gemailpassword;
               Host     := Gemailserver;

               //Usar TLS SLL para el envío
               if GemailSSL = 'TLS explícito'   then useTLS := utUseExplicitTLS;
               if GemailSSL = 'Sin soporte TLS' then useTLS := utNoTLSSupport;
               if GemailSSL = 'TLS implícito'   then useTLS := utUseImplicitTLS;
               if GemailSSL = 'TLS requerido'   then useTLS := utUseRequireTLS;
                                                               
               // Puerto de salida                             
               port := strtoint(Gemailpuerto);
          end;

          try
               Listbox2.Lines.Add(DateTimeToStr(now)+' conectando con el servidor de correo ['+Gemailserver+']');
               SMTP.Connect;
               Listbox2.Lines.Add(DateTimeToStr(now)+' conectado con el servidor de correo');
          except
               on e : exception do
               begin
                    Listbox2.Lines.add(DateTimeToStr(now) + ' Error al conectar al servidor de correo ' + e.ClassName + ' ' + e.Message);
                    MessageDlg('Error al conectar con servidor SMTP: ' + e.Message, mtError, [mbok], 0);
               end;
          end;

          if SMTP.Connected then
          begin

               // Composicion del correo
               eMessage.Body.Assign(Etexto.Lines);
               eMessage.From.Text := Ede.text;
               eMessage.Recipients.Clear;
               x:= epara.text;

               If Ansipos(';',x) > 0 Then
               begin
                    While Ansipos(';',x) > 0 Do
                    begin
                         eMessage.Recipients.Add.Address:=Copy(x,1,Ansipos(';',x)-1);
                         x:=Copy(x,Ansipos(';',x)+1,999);
                    end;          { while }
                    eMessage.Recipients.Add.Address:=x;
               end
               else
                    eMessage.Recipients.Add.Address:=Epara.Text;

               eMessage.Subject := easunto.Text;

               If Efile.FileName <> '' then TIdAttachmentFile.Create(eMessage.MessageParts,Efile.FileName);

               Emessage.Priority := TidmessagePriority(mpHighest);

               Try
                    if Fcorreo.tag <> 7 then
                    begin
                         SMTP.Send(Emessage);
                         DM.Bitacora('Correo','Envio de correo electronico', '',' Destinatario ('+Epara.text+')');

                         if ladjuntos.Items.Count > 0 then MessageDlg('El correo y sus adjuntos fueron enviados correctamente',mtInformation,[mbOk],0)
                         else MessageDlg('El correo fue enviado correctamente',mtInformation,[mbOk],0);

                         //DeleteFile(Efile.FileName);
                    end
                    else
                         Fcorreo.Tag := 0;

                    if SMTP.Connected then SMTP.Disconnect;
               except
                    on e : exception do
                    begin
                         Listbox2.Lines.add(DateTimeToStr(now) + ' Error al enviar mensaje. ' + e.ClassName + ' ' + e.Message);
                         MessageDlg('Error al enviar e-mail: ' + e.Message, mtError, [mbok], 0);
                         if SMTP.Connected then SMTP.Disconnect;
                    end;
               end;
          end
          else
               MessageDlg('No fue posible conectar con el servidor de correo', mtError, [mbOK], 0);
gracias de antemano por su ayuda.
Responder Con Cita
  #4  
Antiguo 17-09-2020
Garada Garada is offline
Miembro
 
Registrado: jul 2004
Posts: 66
Poder: 20
Garada Va por buen camino
Para GMail las opciones que uso son estas:

Código Delphi [-]
SSL.SSLOptions.Method := sslvTLSv1;
SSL.SSLOptions.Mode := sslmUnassigned;

SMTP.AuthType := satDefault;
SMTP.Host := 'smtp.gmail.com';
SMTP.Username := 'direccionemail@gmail.com';
SMTP.Password := 'laquesea';

SMTP.IOHandler := SSL;
SMTP.UseTLS := utUseRequireTLS;
SMTP.Port := 587;

Y, como bien dices, en la configuración de seguridad de la cuenta de Google activar "Acceso a aplicaciones menos seguras".
Si está activada la identificación de doble factor pues lo de menos seguras no se permite pero puedes generar una "contraseña de aplicación".
Y en la configuración de GMail debes activar el servicio POP/MAPI

Si con todo esto no va, ¿dónde y qué error da?
Responder Con Cita
  #5  
Antiguo 17-09-2020
ArtPortEsp ArtPortEsp is offline
Miembro
 
Registrado: may 2018
Ubicación: Mexico
Posts: 151
Poder: 6
ArtPortEsp Va por buen camino
Cita:
Empezado por Garada Ver Mensaje
Para GMail las opciones que uso son estas:

Código Delphi [-]
SSL.SSLOptions.Method := sslvTLSv1;
SSL.SSLOptions.Mode := sslmUnassigned;

SMTP.AuthType := satDefault;
SMTP.Host := 'smtp.gmail.com';
SMTP.Username := 'direccionemail@gmail.com';
SMTP.Password := 'laquesea';

SMTP.IOHandler := SSL;
SMTP.UseTLS := utUseRequireTLS;
SMTP.Port := 587;

Y, como bien dices, en la configuración de seguridad de la cuenta de Google activar "Acceso a aplicaciones menos seguras".
Si está activada la identificación de doble factor pues lo de menos seguras no se permite pero puedes generar una "contraseña de aplicación".
Y en la configuración de GMail debes activar el servicio POP/MAPI

Si con todo esto no va, ¿dónde y qué error da?
Muchas gracias!... funciono con algunos clientes que no tienen activada la VERIFICACIÓN DE DOS PASOS, enel caso de que la tengan, como usas la contraseña de aplicación?
Responder Con Cita
  #6  
Antiguo 18-09-2020
Garada Garada is offline
Miembro
 
Registrado: jul 2004
Posts: 66
Poder: 20
Garada Va por buen camino
Personalmente, no se me ha dado el caso de la contraseña de aplicación.

En teoría, generas la contraseña y la usas sustituyendo a la contraseña del cliente.

Estas son las instrucciones de Google.
https://support.google.com/accounts/answer/185833?hl=es
Dice que debes elegir una aplicación, si no aparece tu aplicación igual debes hacer primero un intento con la contraseña normal para que la registre.

La otra opción es usar OAUTH2, el sistema que prefiere Google. Aquí tienes un ejemplo de como usar con Indy, pero creo que necesitas versiones modernas de Delphi.
https://github.com/geoffsmith82/Gmai...ster/README.md
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
Configuración Dns Nuevo Con Servidor Propio marcelocarazas Redes 3 19-04-2016 17:07:39
Configuración cuenta para envio de correo yomismo24 Internet 2 01-07-2008 17:27:26
Configuracion de servidor de impresora omy Varios 3 28-01-2008 20:47:54
detectar configuracion regional pborges36 Varios 7 07-04-2005 23:06:03


La franja horaria es GMT +2. Ahora son las 11:13:53.


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