• Domingo 22 de Diciembre de 2024, 14:02

Autor Tema:  Problema Al Enviar Mails  (Leído 11795 veces)

RazoR

  • Nuevo Miembro
  • *
  • Mensajes: 20
    • Ver Perfil
Problema Al Enviar Mails
« en: Jueves 22 de Septiembre de 2005, 01:34 »
0
Bueno, estoy tratando de hacer un programa y necesito enviar un mail. Para ello intenté usar los componentes Indy (v10) y una cuenta de GMail. En fin, puse las DLLs de SSL en el directorio del proyecto y puse un idSMTP, un IdSSLIOHandlerSocketOpenSSL y un IdMessage en el formulario. Puse los datos de mi cuenta, cambié el puerto del SMTP y SSL a 587 (que es el que usa gmail) y puse que use el modo ImplicitTLS pero al intentar enviar el mail no lo hace :( Alguien tiene idea de cómo se hace o tiene otra alternativa para enviar mails?

Saludos, Gonzalo :hola:

Neko-sama

  • Miembro activo
  • **
  • Mensajes: 99
    • Ver Perfil
Re: Problema Al Enviar Mails
« Respuesta #1 en: Jueves 22 de Septiembre de 2005, 03:58 »
0
usas el TNMSMTP de FastNet

Te conectas:
Código: Text
  1.  
  2. procedure TForm1.Button1Click(Sender: TObject);
  3. begin
  4.   if NMSMTP1.Connected then
  5.     NMSMTP1.Disconnect
  6.   else
  7.   begin
  8.     NMSMTP1.Host := '';
  9.     NMSMTP1.UserID := '';
  10.     NMSMTP1.Connect;
  11.   end;
  12. end;
  13.  
  14.  

Envias el correo:
Código: Text
  1.  
  2. procedure TForm1.Button2Click(Sender: TObject);
  3. begin
  4.   if NMSMTP1.Connected then
  5.   begin
  6.     NMSMTP1.PostMessage.FromAddress := '';
  7.     NMSMTP1.PostMessage.FromName := '';
  8.     NMSMTP1.PostMessage.ToAddress.Text := '';
  9.     NMSMTP1.PostMessage.Body.Text := '';
  10.     NMSMTP1.PostMessage.Subject := '';
  11.     NMSMTP1.SendMail;
  12.   end
  13.   else
  14.     ShowMessage('Necesitas estar conectado para enviar el mail');
  15. end;
  16.  
  17.  
  18.  

eso es todo
el puerto por defecto es el 25 el del SMTP
tienes que configurar un host...  puedes usar un dns o la IP...
creo que el user Id no es necesario...

cuando exista un error... capturalo y veras que es un error de SMTP y que esta documentado... creo que son codigos pero cada codigo significa algo asi que es facil entender que es lo que pasa...

RazoR

  • Nuevo Miembro
  • *
  • Mensajes: 20
    • Ver Perfil
Re: Problema Al Enviar Mails
« Respuesta #2 en: Jueves 22 de Septiembre de 2005, 04:58 »
0
El problema es que para usar el servidor SMTP de GMail necesito identificarme con mi usuario y password y para ésto necesito usar el TLS y no sé bien como hacerlo. Sino, alguien sabe alguno que no requiera ningún tipo de autenticación?

bartolomeo

  • Miembro MUY activo
  • ***
  • Mensajes: 207
    • Ver Perfil
Re: Problema Al Enviar Mails
« Respuesta #3 en: Jueves 22 de Septiembre de 2005, 15:10 »
0
El mensaje tiene que ser configurado de la siguiente manera:

Código: Text
  1. with idMessage do begin
  2.     // Cuerpo del mensaje.
  3.     Body.Clear;
  4.     Body.Add('Aqui añades el cuerpo del mensaje);
  5.     // Cuenta Origen.
  6.     From.Text := EMAILORIGEN;
  7.     // Cuenta Destino.
  8.     Recipients.EMailAddresses := EMAILDESTINO;
  9.     // Asunto del email.
  10.     Subject := ASUNTO;
  11.     // Prioridad del mensaje, ALTA.
  12.     Priority := TidMessagePriority(mpHighest);
  13.     // Coloco el archivo adjunto el cual enviar.
  14.     TidAttachment.Create(idMensage.MessageParts,ARCHIVOADJUNTO);
  15.   end;
  16.  


y el idsmpt:

Código: Text
  1. with idSMPT do begin
  2.    // Configuro autentificación.
  3.    AuthenticationType := atLogin;
  4.   Username := USERNAME;  // Nombre del usuario
  5.   Password := PASS;  // la password
  6.   // Configuro el servidor SMTP.
  7.   Host := HOST;
  8.   Port := PUERTO;
  9.    
  10.   try
  11.     Connect;
  12.     try
  13.       // Envio el mensaje.
  14.       Send(idMenssage);
  15.     finally
  16.       Disconnect;
  17.     end;
  18.     Msg('Enviado Correctamente');
  19.   except
  20.      // Capturo algunas excepciones que pueden ocurrir
  21.     ON E: EIdProtocolReplyError do begin
  22.       Msg('No se ha podido enviar el email.' + #13 +
  23.           'Incorrecto el email o el usuario o la password.');
  24.     end;
  25.     on E: EFOpenError do begin
  26.       Msg('No se ha podido enviar el email.' + #13 +
  27.           'Fichero Adjunto desconocido o erróneo.');
  28.     end;
  29.     on E: EIdSocketError do begin
  30.       Msg('No se ha podido enviar el email.'+ #13 +
  31.           'Host desconocido o incorrecto.');
  32.     end
  33.     else begin
  34.       Msg('Fallo en el envio de email');
  35.     end;
  36.   end;
  37.   if connected then Disconnect;
  38. end
  39.  

Bienvenido  :hola:

[size=109]Por que Rolo soy yo¡¡¡¡¡[/size]

RazoR

  • Nuevo Miembro
  • *
  • Mensajes: 20
    • Ver Perfil
Re: Problema Al Enviar Mails
« Respuesta #4 en: Jueves 22 de Septiembre de 2005, 15:18 »
0
Bueno, estoy por terminar unos trabajos para la escuela y si tengo tiempo lo pruebo. Gracias por las respuestas de ambos y por la bienvenida :D

Saludos, Gonzalo

/EDIT: bad news :( Acabo de probarlo y no anda. En AuthType no existe el valor atLogin, hay atDefault, atNone y atSASL. Usando el primero me da el error 'Must issue a STARTTLS command first' y si uso atSASL me da el error 'Need SASL mechanisms to login with it!!'.

Yo había encontrado ésto para usar POP3 y una cuenta de GMail. Sinceramente no lo probé, debería hacerlo, pero yo necesito usar el SMTP. Intenté hacer como ahí, que usaba un IOHandler y usaba ImplicitTLS pero no obtuve resultados favorables. Acá está el link:

http://www.experts-exchange.com/Programmin...Q_21333608.html

bartolomeo

  • Miembro MUY activo
  • ***
  • Mensajes: 207
    • Ver Perfil
Re: Problema Al Enviar Mails
« Respuesta #5 en: Jueves 22 de Septiembre de 2005, 16:06 »
0
Pero no entiendo yo uso este codigo para enviar mensajes y funciona bien  :blink:

dejanos ver tu codigo

[size=109]Por que Rolo soy yo¡¡¡¡¡[/size]

RazoR

  • Nuevo Miembro
  • *
  • Mensajes: 20
    • Ver Perfil
Re: Problema Al Enviar Mails
« Respuesta #6 en: Jueves 22 de Septiembre de 2005, 16:18 »
0
Ugh es raro... yo justamente copié y pegué tu código y le cambié el valor del host por smtp.gmail.com el puerto por 587, después el user por razor.ar@gmail.com el password por el mio y los datos del mensaje como indicaste vos. En todo caso, no podrías enviarme en un zip/rar un ejemplo donde a vos te ande (vos lo probaste también con el de Gmail?).

Saludos, Gonzalo.

bartolomeo

  • Miembro MUY activo
  • ***
  • Mensajes: 207
    • Ver Perfil
Re: Problema Al Enviar Mails
« Respuesta #7 en: Jueves 22 de Septiembre de 2005, 16:36 »
0
Citar
En AuthType no existe el valor atLogin

Hello, comando acabo de mirar en delphi Vs 5 la componente IdSMTP1 y si tiene en la propiedad AuthenticationType el valo atlogin y ademas tiene la atnone  :blink:

Changos que pasa???  :ph34r: , hechale otra revisadita, es mas usa el codigo que te di y seguo funciona  :alien:

[size=109]Por que Rolo soy yo¡¡¡¡¡[/size]

RazoR

  • Nuevo Miembro
  • *
  • Mensajes: 20
    • Ver Perfil
Re: Problema Al Enviar Mails
« Respuesta #8 en: Jueves 22 de Septiembre de 2005, 16:40 »
0
Uhm, es raro. Tengo el Delphi 7 y Indy 10. Acá dejo un screen del componente SMTP y los valores de la propiedad AuthType.



Y si quiero usar ése código me dice que no encuentra ese valor en la propiedad AuthType lógicamente :(

bartolomeo

  • Miembro MUY activo
  • ***
  • Mensajes: 207
    • Ver Perfil
Re: Problema Al Enviar Mails
« Respuesta #9 en: Jueves 22 de Septiembre de 2005, 17:20 »
0
mmmm ya veo, tienes toda la maldita razon de nada te sirve mi codigo hecho para versiones 5 y 4 (no se las demas) con componentes indy de inferior version  :huh: .

Pues estuve dando una vueltica por la superautopista de la informacio  <_<  y encontre este codigo para enviar mensajes de correo con autenticacion con componentes indy y con la version de delphi 7  :o

asi que somo ultimo recurso te la posteo y espero que esta vez tengamos los dos mejor suerte:

Código: Text
  1. var
  2. i:integer;
  3. begin
  4. Memo.Lines.Add('Verificando el Usuario...');
  5. form6.ShowModal;
  6. if(Form6.Desconectar=0) Then
  7. begin
  8. Memo.clear;
  9.   //Autentificación en el servidor
  10.   IdSMTP1.AuthenticationType :=atLogin;
  11.   IdSMTP1.Username := trim(txtUsuario.Text);
  12.   IdSMTP1.Password :=trim(txtclave.Text)&#59;
  13.   // Nombre del Servidor ...
  14.   IdSMTP1.Host:=trim( txtServidor.Text );
  15.   // Puerto de correo ...
  16.   IdSMTP1.Port:=25;
  17.  
  18.   try
  19.     Memo.Lines.Add('Conectando con ' + trim( txtServidor.Text ) + ', puerto 25' );
  20.     // Conectando ...
  21.     IdSMTP1.Connect;
  22.   Except
  23.     // Imposible conectar con el servidor de correo ...
  24.     Memo.lines.add('Fallo en la conexion con el servidor SMTP.');
  25.     Exit;
  26.   end;
  27.     Memo.lines.add( 'Componiendo mail ...' );
  28.     with Mensaje do begin
  29.       // Dirección origen ...
  30.       if ( trim( txtDe.Text ) <> '' ) then
  31.         From.Text:= trim( txtDe.Text )
  32.       else
  33.         From.Text:='desconocido@anonimo.dominio';
  34.       Memo.lines.add( 'Direccion origen : ' +   From.Text );
  35.       // Dirección destino. Se pueden indicar varias  ...
  36.       Recipients.EMailAddresses:=( trim( txtPara.Text ) );
  37.       Memo.lines.add( 'Dirección destino : ' + trim( txtPara.Text ) );
  38.       // Direcciones copia. Se pueden indicar varias ...
  39.       if( trim( txtCC.Text ) <> '' ) then begin
  40.         CClist.EMailAddresses:=( trim( txtCC.Text ) );
  41.         Memo.lines.add( 'CC : ' + trim( txtCC.Text ) );
  42.       end;
  43.        // Titulo del mail ...
  44.       if( trim( txtAsunto.Text )='' ) then
  45.         subject:='[Sin titulo]'
  46.       else
  47.         subject:= trim( txtAsunto.Text );
  48.       Memo.lines.add( 'Asunto : ' + subject );
  49.       // Adjuntos. Se pueden indicar varios ...
  50.       if ( trim( txtAdjunto.Text ) <> '') then
  51.       begin
  52.         TIdAttachment.Create(Mensaje.MessageParts,txtAdjunto.Text );
  53.         Memo.lines.add( 'Archivo Adjunto : ' + trim( txtAdjunto.text ) );
  54.       end;
  55.       if(MemoAdjunto.Visible=true) then
  56.       begin
  57.         for i:=0 to MemoAdjunto.Lines.Count-1 do
  58.           TIdAttachment.Create(Mensaje.MessageParts,MemoAdjunto.Lines[i] );
  59.         Memo.lines.Add( 'Archivos Adjuntos :');
  60.         Memo.lines.AddStrings( MemoAdjunto.Lines  );
  61.       end;
  62.       // Cuerpo del mail ...
  63.       if ( mCuerpo.Lines.Count > 0 ) then begin
  64.         body.Assign(mCuerpo.Lines);
  65.         Memo.lines.add( 'Añadiendo cuerpo del E-mail ...' );
  66.         Memo.lines.add( ' ' );
  67.       end;
  68.       Memo.lines.add( 'Enviando ... ');
  69.       // Enviando mail ...
  70.       if ( trim( txtPara.Text ) <> '' ) then begin
  71.         IdSmtp1.Send(mensaje);
  72.         Memo.lines.add( 'E-Mail enviado.');
  73.       end else
  74.         Memo.lines.add( 'E-Mail no enviado, no se especificó dirección de destino.' );
  75.       // Desconectando ...
  76.       IdSmtp1.Disconnect;
  77.     end;
  78.     Memo.lines.add( 'Desconectado');
  79.  

obviamente es un codigo para que te guies, pero lo he visto todo y me parece de peluche  :smartass:

[size=109]Por que Rolo soy yo¡¡¡¡¡[/size]

RazoR

  • Nuevo Miembro
  • *
  • Mensajes: 20
    • Ver Perfil
Re: Problema Al Enviar Mails
« Respuesta #10 en: Jueves 22 de Septiembre de 2005, 17:27 »
0
Muchísimas gracias, ahora me tengo que ir a la escuela, pero cuando vuelvo lo pruebo y posteo los resultados que tuve :D

Saludos, Gonzalo.

bartolomeo

  • Miembro MUY activo
  • ***
  • Mensajes: 207
    • Ver Perfil
Re: Problema Al Enviar Mails
« Respuesta #11 en: Jueves 22 de Septiembre de 2005, 17:39 »
0
Perfecto, por que no tengo como probarlo y serviria mucho para los demas, pero te queria comentar algo y es que en lo posible no pidas un codigo hecho, estoy colocando un codigo hecho por que no manejo el concepto de enviar email en versiones de delphi superiores a  la 5... pero pa la proxima puede que no sea asi es decir que nunca coloque una sola linea de codigo si no que simplemente te indique como podria hacerce las cosas, vale???  :P .

[size=109]Por que Rolo soy yo¡¡¡¡¡[/size]

RazoR

  • Nuevo Miembro
  • *
  • Mensajes: 20
    • Ver Perfil
Re: Problema Al Enviar Mails
« Respuesta #12 en: Jueves 22 de Septiembre de 2005, 20:38 »
0
Sisi, no hay problema. Yo pregunté (tal vez no lo tendría que haber hecho y haber investigado más por mi cuenta) porque no conosco nada sobre el tema de la implementación del TLS en las a servidores SMTP y había leído que se hacía así como lo estaba haciendo yo pero se ve que algo estaba haciendo mal o me faltaba (éso lo leí en la Knowledge Base de Indy). Ahora lo pruebo y me fijo si anda.

Saludos, Gonzalo.

RazoR

  • Nuevo Miembro
  • *
  • Mensajes: 20
    • Ver Perfil
Re: Problema Al Enviar Mails
« Respuesta #13 en: Jueves 22 de Septiembre de 2005, 21:03 »
0
Bueno, lo probé pero es prácticamente lo mismo que el que me habías dado vos y se ve que es para una versión anterior de Indy a la que tengo yo (debe ser para la 9). Ahora estoy intentando probar con otro servidor de smtp (hotpop.com). Espero tener mejor suerte.

Saludos, Gonzalo.

bartolomeo

  • Miembro MUY activo
  • ***
  • Mensajes: 207
    • Ver Perfil
Re: Problema Al Enviar Mails
« Respuesta #14 en: Jueves 22 de Septiembre de 2005, 21:29 »
0
Bien por ti OK, aunque si estas muy afanado bajate de version de Indy jejejeje  :D , no mentiras es por molestar, trabaja y cuentanos como se hace para los proximos que vengamos a averiguar lo mismo.

[size=109]Por que Rolo soy yo¡¡¡¡¡[/size]

RazoR

  • Nuevo Miembro
  • *
  • Mensajes: 20
    • Ver Perfil
Re: Problema Al Enviar Mails
« Respuesta #15 en: Jueves 22 de Septiembre de 2005, 21:38 »
0
Bueno, malas noticias de nuevo. Éste servidor de SMTP sólo requiere el usuario y contraseña como autenticación, no usa SSL (dice que no marquemos la opción secure authentication y dejemos SSL use en "never") así que sólo puse esos datos en el IdSMTP, le puse de host "smtp.hotpop.com", puerto 25, user 3dgsms@HotPOP.com[/b]
    * Outgoing/SMTP Server: smtp.hotpop.com, port 25*
    * Email Address: 3dgsms@HotPOP.com (or any other email address you have)
    * Leave Messages on server: false (some clients will instead have a "Delete messages from server" option, which should be set to true).
    * Maximum Message Size: 500 KB
    * Mailbox Size: 10 MB
    * Mailbox Usage: 0% (0.0 KB)

*HotPOP's outgoing (SMTP) mail server requires authentication. The username and password are the same as the POP Server and website. Do not select "secure" password authentication.
[/quote]

En fin, ya no sé que será, voy a probar con un set de componentes Indy más viejo a ver qué pasa.

Saludos, Gonzalo.

RazoR

  • Nuevo Miembro
  • *
  • Mensajes: 20
    • Ver Perfil
Re: Problema Al Enviar Mails
« Respuesta #16 en: Jueves 22 de Septiembre de 2005, 22:05 »
0
Bueno, mirando otros threads de éste subforo vi que había un sitio de Delphi acá en Argentina (www.delphi.com.ar) así que me puse a buscar threads sobre éste tema y aparentemente todos lo mandan como me pusiste vos (creo que el código que me diste era de ahí también) así que no sé, tendré que buscar algún otro servidor SMTP que no me de problemas. Vos alguna vez enviaste mails por Delphi con un servidor SMTP que no requiera SSL o TLS?

bartolomeo

  • Miembro MUY activo
  • ***
  • Mensajes: 207
    • Ver Perfil
Re: Problema Al Enviar Mails
« Respuesta #17 en: Jueves 22 de Septiembre de 2005, 22:28 »
0
No, pero alfin no te bajaste de version del Indy???  :hola:

[size=109]Por que Rolo soy yo¡¡¡¡¡[/size]

RazoR

  • Nuevo Miembro
  • *
  • Mensajes: 20
    • Ver Perfil
Re: Problema Al Enviar Mails
« Respuesta #18 en: Jueves 22 de Septiembre de 2005, 22:30 »
0
Ah sí, me olvidé de comentarlo. Me bajé la 9, la instalé todo bien, hice el programita, configuré todo, se conectó al server, apreté el botón para mandar el mail y me quedo esperando un mensaje de error pero no aparece. Me emocioné y pensé que había mandado el mail pero no, voy a la casilla y no había llegado, mandé a 3 casillas diferentes (en diferentes servers) y tampoco llegaron. Es rarísimo. Por eso estoy tratando de conseguir otro servidor SMTP para descartar eso.

Saludos, Gonzalo.

/EDIT: me fijé recién de nuevo el mail y llegó!!! :D :D :D Qué raro la verdad, con el Indy 10 no me anduvo pero con el Indy 9 sí, poniendo atLogin en la autenticación :S La verdad que es muy extraño. Tal vez en Indy 10 se hará de otra manera.

Muchísimas gracias por la ayuda bartolomeo ;) :D

bartolomeo

  • Miembro MUY activo
  • ***
  • Mensajes: 207
    • Ver Perfil
Re: Problema Al Enviar Mails
« Respuesta #19 en: Jueves 22 de Septiembre de 2005, 23:17 »
0
Pues muchas felicitaciones, pero si hay que mirar que pasa en la version 10 de los indy, solo para no quedarnos con la espinita vale??  :D

Me alegra mucho es el hilo mas largo que he respondido y me siento satisfecho  :hola:  Suerte

ahhh y te esperamos para ayudarte nuevamente

[size=109]Por que Rolo soy yo¡¡¡¡¡[/size]

RazoR

  • Nuevo Miembro
  • *
  • Mensajes: 20
    • Ver Perfil
Re: Problema Al Enviar Mails
« Respuesta #20 en: Jueves 22 de Septiembre de 2005, 23:20 »
0
Jeje si, gracias de nuevo por toda la ayuda :D Cuando termine el programita que estoy haciendo voy a volver a instalar el Indy 10 y ponerme a investigar cómo se hace ésto en dichar versión porque no puede quedar así :lol:

Saludos, Gonzalo.