Ver la Versión Completa : Conectar al servidor smtp con componentes INDY
cincosoft
10-02-2011, 20:41:06
Hola,
Estoy intentando enviar correo desde una pantalla y al intentar la conexión me da el siguiente error:
...raised exception class EIdSocketError with message 'Socket Error # 11001 Host not found,', Process stopped.....
El código es el siguiente:
procedure TFRMListados.EnviarMensaje(sUsuario, sClave, SHost, sAdjunto,
sAsunto, sDestino, sMensaje: String; sPort : Integer);
var
smtp : TIdSMTP;
begin
//Creamos los componentes de conexión con el servidor
smtp := TIdSMTP.Create(nil);
smtp.Username := 'miusuario@gmail.com';
smtp.Password := 'miclave';
smtp.Host := 'smtp.gmail.com';
smtp.Port := 25;
smtp.AuthenticationType := atLogin;
smtp.Connect; -- Linea que da el error
También probé con el puerto 465.
Muchas gracias.
newtron
12-02-2011, 11:03:35
Por alguna extraña razón hay servidores de correos con las que la conexión falla y gmail es una de ellas, prueba con otro servidor de correo, yahoo por ejemplo.
Igual alguien sabe decirnos porque unos servidores conectan y otros no.
Saludos
Enan0
15-02-2011, 14:14:29
el problema con Gmail es:
1) que no utiliza el puerto 25
2) Utiliza SSL
Si verificas los Los hilos hay subido un ejemplo de como enviar y recibir correos utilizando INDY 10
Este es uno de ellos
Ejemplo (http://www.clubdelphi.com/foros/showthread.php?t=71834)
pacopenin
15-02-2011, 17:39:13
Hola.
Yo no uso Indy, sino synapse y el siguiente ejemplo a mi me funciona bien :
procedure MailSend(const sSmtpHost, sSmtpPort, sSmtpUser, sSmtpPasswd, sFrom, sTo, sFileName: AnsiString);
var
smtp: TSMTPSend;
begin
smtp := TSMTPSend.Create;
try
smtp.UserName := sSmtpUser;
smtp.Password := sSmtpPasswd;
smtp.TargetHost := sSmtpHost;
smtp.TargetPort := sSmtpPort;
smtp.AutoTLS := true;
if not smtp.Login() then
raise ESMTP.Create('SMTP ERROR: Login:' + smtp.EnhCodeString);
if not smtp.MailFrom(sFrom, Length(sFrom)) then
raise ESMTP.Create('SMTP ERROR: MailFrom:' + smtp.EnhCodeString);
if not smtp.MailTo(sTo) then
raise ESMTP.Create('SMTP ERROR: MailTo:' + smtp.EnhCodeString);
if not smtp.MailData(msg_lines) then
raise ESMTP.Create('SMTP ERROR: MailData:' + smtp.EnhCodeString);
if not smtp.Logout() then
raise ESMTP.Create('SMTP ERROR: Logout:' + smtp.EnhCodeString);
finally
smtp.Free;
end;
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
MailSend('smtp.gmail.com', '587', 'cuenta@gmail.com', 'password', 'cuenta.from@gmail.com', 'cooreoTo@correor.com', 'test.txt');
//
end;
Saludos,
newtron
15-02-2011, 17:52:31
el problema con Gmail es:
1) que no utiliza el puerto 25
2) Utiliza SSL
Si verificas los Los hilos hay subido un ejemplo de como enviar y recibir correos utilizando INDY 10
Este es uno de ellos
Ejemplo (http://www.clubdelphi.com/foros/showthread.php?t=71834)
Es una tontería pero al compilar el ejemplo que me indicas me da error en la linea:
IdIMAP41.AuthType :=iatUserPass;
qué hay que añadir al uses para que se trague iatUserPass ?
Gracias y un saludo
vBulletin v3.6.8, Derechos ©2000-2024, Jelsoft Enterprises Ltd.