Programación General > Delphi
Problema Al Enviar Mails
RazoR:
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:
usas el TNMSMTP de FastNet
Te conectas:
--- Código: Text --- procedure TForm1.Button1Click(Sender: TObject);begin if NMSMTP1.Connected then NMSMTP1.Disconnect else begin NMSMTP1.Host := ''; NMSMTP1.UserID := ''; NMSMTP1.Connect; end;end;
Envias el correo:
--- Código: Text --- procedure TForm1.Button2Click(Sender: TObject);begin if NMSMTP1.Connected then begin NMSMTP1.PostMessage.FromAddress := ''; NMSMTP1.PostMessage.FromName := ''; NMSMTP1.PostMessage.ToAddress.Text := ''; NMSMTP1.PostMessage.Body.Text := ''; NMSMTP1.PostMessage.Subject := ''; NMSMTP1.SendMail; end else ShowMessage('Necesitas estar conectado para enviar el mail');end;
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:
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:
El mensaje tiene que ser configurado de la siguiente manera:
--- Código: Text ---with idMessage do begin // Cuerpo del mensaje. Body.Clear; Body.Add('Aqui añades el cuerpo del mensaje); // Cuenta Origen. From.Text := EMAILORIGEN; // Cuenta Destino. Recipients.EMailAddresses := EMAILDESTINO; // Asunto del email. Subject := ASUNTO; // Prioridad del mensaje, ALTA. Priority := TidMessagePriority(mpHighest); // Coloco el archivo adjunto el cual enviar. TidAttachment.Create(idMensage.MessageParts,ARCHIVOADJUNTO); end;
y el idsmpt:
--- Código: Text ---with idSMPT do begin // Configuro autentificación. AuthenticationType := atLogin; Username := USERNAME; // Nombre del usuario Password := PASS; // la password // Configuro el servidor SMTP. Host := HOST; Port := PUERTO; try Connect; try // Envio el mensaje. Send(idMenssage); finally Disconnect; end; Msg('Enviado Correctamente'); except // Capturo algunas excepciones que pueden ocurrir ON E: EIdProtocolReplyError do begin Msg('No se ha podido enviar el email.' + #13 + 'Incorrecto el email o el usuario o la password.'); end; on E: EFOpenError do begin Msg('No se ha podido enviar el email.' + #13 + 'Fichero Adjunto desconocido o erróneo.'); end; on E: EIdSocketError do begin Msg('No se ha podido enviar el email.'+ #13 + 'Host desconocido o incorrecto.'); end else begin Msg('Fallo en el envio de email'); end; end; if connected then Disconnect;end
Bienvenido :hola:
RazoR:
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
Navegación
[#] Página Siguiente
Ir a la versión completa