FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
|||
|
|||
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? |
#2
|
|||
|
|||
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. |
#3
|
|||
|
|||
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:
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); |
#4
|
|||
|
|||
Para GMail las opciones que uso son estas:
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? |
#5
|
|||
|
|||
Cita:
|
#6
|
|||
|
|||
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 |
|
|
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 |
|