Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 17-06-2018
usuario1000 usuario1000 is offline
Miembro
 
Registrado: nov 2016
Posts: 86
Poder: 8
usuario1000 Va por buen camino
enviar email a gmail /hotmail /...

Buenas a todos.


Ya sé que hay hilos por el foro de enviar email, pero creanme, he leido y probado de todo y ya me doy por vencido y he llegado al punto de tener que solicitar ayuda.


La idea es que desde un email de una empresa pequeñita "xxxxxxxx@servidorempresa.es" enviar unos correos a unos clientes ya seán de hotmail, gmail, icloud, u otros.


Con el código que pongo a continuación logro que los envíe a icloud y otros que no sean ni gmail ni hotmail. Pero no soy capaz de mandar un email a gmail o hotmail.


Alguien caritativo me puede aclarar el codigo a ver en que falla. Gracias a todos. (Delphi 10 Seattle en Windows 10).

Código Delphi [-]
procedure TFPrincipal.ejecutarEmailCliente( sUsuario, sClave, sHost, sAdjunto, sAsunto, sDestino, sMensaje: string );
var
   SMTP: TIdSMTP;
   Mensaje: TIdMessage;
   tipoCorreo:string;
  // Adjunto: TIdAttachment;
begin
  // Creamos el componente de conexión con el servidor

  tipoCorreo:= averiguarTipoCorreo(sDestino);


  if tipoCorreo = 'hotmail' then  // no funciona
  begin
          SMTP := TIdSMTP.Create( nil );
          SMTP.Username := 'correo@corporativo.es';
          SMTP.Password := 'contraseña';
          SMTP.Host := 'smtp.live.com';
          SMTP.Port := 25;

  end;
  if tipoCorreo = 'gmail' then  // no funciona
  begin
          SMTP := TIdSMTP.Create( nil );
          SMTP.Username := 'correo@corporativo.es';
          SMTP.Password := 'contraseña';
          SMTP.Host := 'smtp.gmail.com';
          SMTP.Port := 587;

  end;
  if (tipoCorreo <> 'hotmail') and (tipoCorreo<>'gmail') then  // este sí que funciona
  begin
          SMTP := TIdSMTP.Create( nil );
          SMTP.Username := sUsuario;
          SMTP.Password := sClave;
          SMTP.Host := sHost;
          SMTP.Port := 587;
  end;


  // Creamos el contenido del mensaje
  Mensaje := TIdMessage.Create( nil );
  Mensaje.Clear;
  mensaje.ContentType := 'text/html';
  mensaje.CharSet := 'UTF-8';
  Mensaje.From.Name := sUsuario;   // 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 := TIdAttachment.Create( Mensaje.MessageParts, sAdjunto );
  end
  else
    Adjunto := nil;      }

  // Conectamos con el servidor SMTP


  try
    SMTP.Connect;

  except
//  errores

  end;

  // Si ha conectado enviamos el mensaje y desconectamos
  if SMTP.Connected then
  begin
    try
      SMTP.Send( Mensaje );
   
    except
  // control errores
      
    end;

    try
      SMTP.Disconnect;
    except
      //raise Exception.Create( 'Error al desconectar del servidor.' );
    end;


  end;

end;

Última edición por usuario1000 fecha: 17-06-2018 a las 19:24:16.
Responder Con Cita
  #2  
Antiguo 17-06-2018
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.021
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Bien, pero por qué no puedes enviar a esos emails, qué mensaje de error sale, en qué línea, etc.
Responder Con Cita
  #3  
Antiguo 17-06-2018
usuario1000 usuario1000 is offline
Miembro
 
Registrado: nov 2016
Posts: 86
Poder: 8
usuario1000 Va por buen camino
Buenas,

Cuando intento mandar un email a GMail, da error en la linea :

Código Delphi [-]

SMTP.Send( Mensaje );

El error es el siguiente (vaya no sé insertar imagen):

Project Email.exe raised exception class EidSMTPReplyError with message 'Must issue a STARTTLS comand first. w3-v6sm12181124wrr.88 - gsmtp'.


Cuando intento enviar un email a Hotmail el error lo dá en la misma linea
Código Delphi [-]

SMTP.Send( Mensaje );
El error es el siguiente:
Project Email.exe raised exception class EIdSMTPReplyError with message 'SMTP;Client was not authenticated to send anonymous mail during MAIL FROM [CWLP265CA0154.FBRP265.PROD.OUTLOOK.COM].

(no sé insertar foto);

Gracias.
Responder Con Cita
  #4  
Antiguo 17-06-2018
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.021
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Echa un vistazo a este hilo.
Responder Con Cita
  #5  
Antiguo 18-06-2018
luisgutierrezb luisgutierrezb is offline
Miembro
 
Registrado: oct 2005
Ubicación: México
Posts: 925
Poder: 19
luisgutierrezb Va por buen camino
Creo que hay un problema de concepto, dices que desde la cuenta de una empresa quieres mandar correos a gmail, hotmail etc, no tienes porqué conectarte al smtp de hotmail o Gmail, tienes que conectarte al smtp de la empresa y decir que el correo es para Gmail y de ahí lo mandara no conectarte a cada smtp de donde lo quieras enviar
Responder Con Cita
  #6  
Antiguo 18-06-2018
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is offline
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 18.233
Poder: 10
Neftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en bruto
Como te ha dicho [Casimiro] para usar este tipo de cuenta, hare tiempo que es necesario utilizar SSL. Ya hace años que estos servidores (GMail, Hotmail, Yahoo,...) obligan a conectarse utilizando protocolos seguros.
Para ello es necesario utilizar el componente TIdSSLIOHandlerSocket (y librerías OpenSSL).


Si busca en los foros por este componente (TIdSSLIOHandlerSocket) encontrarás más hilos al respoecto.


Algunas configuraciones que te pueden ser utiles:

Código Delphi [-]
[GMail]
MailServer=smtp.gmail.com
PortServer=465
FromAdress=_CORREO_
FromText=Test correo
////// Valores posibles:  SSLMethod = (sslvSSLv2, sslvSSLv23, sslvSSLv3, sslvTLSv1)
SSLMethod=sslvTLSv1
Password=_PASSWORD_

[Hotmail]
MailServer=smtp-mail.outlook.com
PortServer=587
FromAdress=_CORREO_
////// Valores posibles:  UseTSL = (utNoTLSSupport, utUseImplicitTLS, utUseRequireTLS, utUseExplicitTLS);
UseTSL=utUseExplicitTLS
////// Valores posibles:  SSLMethod = (sslvSSLv2, sslvSSLv23, sslvSSLv3, sslvTLSv1)
SSLMethod=sslvTLSv1
Password=_PASSWORD_

[Yahoo-JL]
MailServer=smtp.correo.yahoo.es
PortServer=465
FromAdress=_CORREO_
FromText=_CORREO_
Password=_PASSWORD_
__________________
Germán Estévez => Web/Blog
Guía de estilo, Guía alternativa
Utiliza TAG's en tus mensajes.
Contactar con el Clubdelphi

P.D: Más tiempo dedicado a la pregunta=Mejores respuestas.
Responder Con Cita
  #7  
Antiguo 07-11-2018
emeritos emeritos is offline
Miembro
 
Registrado: may 2003
Posts: 307
Poder: 21
emeritos Va por buen camino
yo lo tengo asi:
Código Delphi [-]
    DLLHandlelib := LoadLibrary('libeay32.dll');
    DLLHandlessl := LoadLibrary('ssleay32.dll');
    cArchivo := 'C:\carpeta\pdf\Incidencias.pdf';
    mailMensaje.Clear;
    mailMensaje.From.Address := 'xxx@gmail.com';

    mailMensaje.Subject := Etexto.Text;
    Etexto.Text := 'texto a poner';
    mailMensaje.Body.SetText(Etexto.Lines.GetText);
    mailMensaje.From.Name := 'Incidencias';
    mailMensaje.Recipients.EMailAddresses := email.Text;
    indySMTP.Host := 'smtp.gmail.com';
    indySMTP.Username := 'xxx@gmail.com';
    indySMTP.Password := 'clave';
    indySMTP.Port := 465;

    TIdAttachment.Create(mailMensaje.MessageParts, cArchivo);
    indySMTP.AuthenticationType := atLogin;
    indySMTP.IOHandler := IdSSLIOHandlerSocket1;
    IdSSLIOHandlerSocket1.SSLOptions.Method := sslvSSLv23;
    IdSSLIOHandlerSocket1.SSLOptions.Mode := sslmUnassigned;


    indySMTP.Connect;

    If indySMTP.Connected
       Then
          Begin
              indySMTP.Send(mailMensaje);
              indySMTP.Disconnect;
              showmessage('El mensaje se envió correctamente');
          End
       Else showmessage('Se produjo un fallo durante el envío del mensaje');

Sea al correo que sea, me da error en la lineas "indySMTP.Connect;" que es este "Proyect programa.exe raised exception class EIdOSSL ConnectError with mensage "Error connecting SSL" ........



Como lo puedo solucionar. Gracias

Última edición por Casimiro Notevi fecha: 07-11-2018 a las 11:36:38.
Responder Con Cita
  #8  
Antiguo 07-11-2018
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.021
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Puede que espere otra versión de la SSL, en lugar de la sslvSSLv23
Responder Con Cita
  #9  
Antiguo 07-11-2018
emeritos emeritos is offline
Miembro
 
Registrado: may 2003
Posts: 307
Poder: 21
emeritos Va por buen camino
Como puedo averiguar la version correcta. Por que creo que en otro programa ya me funciono.

Gracias.
Responder Con Cita
  #10  
Antiguo 07-11-2018
emeritos emeritos is offline
Miembro
 
Registrado: may 2003
Posts: 307
Poder: 21
emeritos Va por buen camino
He probado con todas estas que vienen y todas dan el mismo fallo
Código Delphi [-]
//    IdSSLIOHandlerSocket1.SSLOptions.Method := sslvSSLv23;
//    IdSSLIOHandlerSocket1.SSLOptions.Method := sslvSSLv2;
//    IdSSLIOHandlerSocket1.SSLOptions.Method := sslvSSLv3;
//    IdSSLIOHandlerSocket1.SSLOptions.Method := sslvTLSv1;
Responder Con Cita
  #11  
Antiguo 13-07-2019
usuario1000 usuario1000 is offline
Miembro
 
Registrado: nov 2016
Posts: 86
Poder: 8
usuario1000 Va por buen camino
Tarda Mucho.

Buenas tardes a todos,


Tengo el siguiente proceso que ha estado funcionando perfectamente, pero ha pasado algo que me tiene desconcertado.


En el trabajo envío emails desde el usuario al administrador, a través de una aplicación de Delphi 2010 Seatle en windows 10, al usuario le presento un mensaje de que se ha enviado un email pero este tarda hasta 50 segundos o más en enviarse y se queda la aplicación paralizada, sin embargo, en casa cuando lo pruebo, se envían sin esperar apenas 2 segundos. ¿que puede estar pasando?. ¿Cómo hago para reducir ese tiempo, por qué en casa va bien, siendo el mismo programa?. En el trabajo iba bien y ahora va muy lento. He cambiado los puertos de 465 a 587 que són los que admite mi proveedor de email.


Este es el procedimiento que utilizo y que hasta ahora iba bien, pero ahora tarda casi un minuto, aunque los emails sí llegan perfectamente.





Código Delphi [-]
procedure TServerMethods1.enviarEmail(destinatario, asunto, cuerpo: string);
var
  DATA: TIDMessage;
  SMTP: TIDsmtp;
  SSL: TIdSSLIOhandlerSocketOpenSSL;
begin

  SMTP := TIDsmtp.Create(nil);
  DATA := TIDMessage.Create(nil);
  SSL  := TIdSSLIOhandlerSocketOpenSSL.Create(nil);

  SSL.SSLOptions.Method := SSLVtlsv1;
  SSL.SSLOptions.Mode := sslmUNassigned;
  SSL.SSLOptions.VerifyMode := [];
  SSL.SSLOptions.VerifyDepth:= 0;

  DATA.ContentType := 'text/plain';
  DATA.CharSet :=  'UTF-8';
  DATA.From.Address := 'correo@inventado.es';
  DATA.Recipients.EMailAddresses := destinatario;
  DATA.Subject := asunto;
  DATA.Body.Text := cuerpo;

  SMTP.IOHandler := SSL;
  SMTP.Host := 'smtp.servidorinventado.com'; // servidor de correo
  SMTP.Port := 465;
  SMTP.Username := 'correo@inventado.es';
  SMTP.Password := 'contraseñaficticia';
  SMTP.UseTLS := utUseExplicitTLS;

  try
      try
        SMTP.Connect;
        SMTP.Send(DATA);  //aquí es donde se para hasta 1 minuto
        SMTP.Disconnect;
      except
     SMTP.Disconnect;
          // error
      end;
  finally
      SMTP.Free;
      DATA.Free;
      SSL.Free;
  end;

end;


Gracias por vuestra ayuda.
Responder Con Cita
  #12  
Antiguo 13-07-2019
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.021
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Si va bien en algunos equipos y mal en uno de ellos, está claro que el problema es el equipo ese
Responder Con Cita
  #13  
Antiguo 14-07-2019
usuario1000 usuario1000 is offline
Miembro
 
Registrado: nov 2016
Posts: 86
Poder: 8
usuario1000 Va por buen camino
Cita:
Empezado por Casimiro Notevi Ver Mensaje
Si va bien en algunos equipos y mal en uno de ellos, está claro que el problema es el equipo ese

El equipo trabaja bien(además funciona a modo de servidor), no sé si desinstalar el paquete de office y volverlo a instalar, o esto que estoy diciendo no tiene nada que ver.



Bueno a ver que se me ocurre...


Gracias.
Responder Con Cita
  #14  
Antiguo 14-07-2019
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.021
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Cita:
Empezado por usuario1000 Ver Mensaje
El equipo trabaja bien(además funciona a modo de servidor), no sé si desinstalar el paquete de office y volverlo a instalar, o esto que estoy diciendo no tiene nada que ver.
Bueno a ver que se me ocurre...
Gracias.
Así, sin ver nada poco podemos hacer.
Yo pondría un log, o un mensaje de aviso en cada paso, para saber cuál es el culpable.
Responder Con Cita
  #15  
Antiguo 17-07-2019
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is offline
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 18.233
Poder: 10
Neftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en bruto
Cita:
Empezado por usuario1000 Ver Mensaje
En el trabajo envío emails desde el usuario al administrador, a través de una aplicación de Delphi 2010 Seatle en windows 10, al usuario le presento un mensaje de que se ha enviado un email pero este tarda hasta 50 segundos o más en enviarse y se queda la aplicación paralizada, sin embargo, en casa cuando lo pruebo, se envían sin esperar apenas 2 segundos. ¿que puede estar pasando?.

Tal y como comentas, si el mismo códio funciona diferente en ambos equipos, lo más lógico es que ese comportamiento sea debido a algo "externo" al programa, por lo tanto no deberías tener que arreglar nada en el programa.
¿Las razones? Pues pueden ser muchas y se trata de hacer pruebas para ir descartando.
  • El propio Sistema Operativo; Versiones diferentes o Builds diferentres
  • Programas Antivirus instalados
  • Políticas de grupo que tengas en la empresa (si las tienes)
  • Infraestructura diferente de la red en ambos lugares (no comentras nada de cómo es la red de la empresa)
  • ...
__________________
Germán Estévez => Web/Blog
Guía de estilo, Guía alternativa
Utiliza TAG's en tus mensajes.
Contactar con el Clubdelphi

P.D: Más tiempo dedicado a la pregunta=Mejores respuestas.
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

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 gmail elguille Internet 2 19-05-2016 13:12:54
Enviar e-mail desde terra.com, gmail.com, yahoo.es, movistar.es, hotmail.com, etc. nnebli Varios 13 19-11-2014 10:51:10
enviar un email desde delphi a hotmail o gmail abraham SQL 30 06-08-2007 17:46:20
enviar correos con TNMSMTP a cuentas gratuitas (Hotmail, Gmail, etc.) agustibaldo Internet 5 17-07-2007 16:29:31
Enviar un Email a hotmail desde Delphi7 BuenaOnda Internet 3 26-10-2006 01:21:06


La franja horaria es GMT +2. Ahora son las 19:16:39.


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