Buenas a todos,
sé que aquí se habla de Delphi, pero como existe tanta similitud con lázarus pues a ver si alguien puede ayudarme.
Llevo una semana intentando mandar emails con los componentes de Indy 10, el caso es que con un correo con cifrado SSL de pago me manda los emails, pero al pasarle los datos de gmail me da un error al enviar. El error es con STARTTLS, que no se puede iniciar. Tengo las dll's en la carpeta del ejecutable. He cambiado 20 mil cosas, he buscado por el foro, me he bajado el ejemplo de Roman de como enviar emails, y no hay forma.
Gracias de antemano.
Un saludo.
Os dejo el código de la función:
Código Delphi
[-]procedure EnviarMensaje( sUsuario, sClave, sHost, sAdjunto, sAsunto, sDestino, sMensaje: String );
var
Mensaje: TIdMessage;
Adjunto: TIdAttachmentfile;
begin
with F1 do
begin
SMTP := TIdSMTP.Create( nil );
SMTP.Username := sUsuario;
SMTP.Password := sClave;
SMTP.Host := sHost;
SMTP.Port := 587;
IdSSLOpenSSLHeaders.Load;
IdSSLIOHandlerSocketOpenSSL1.Destination := 'smtp.gmail.com:587';
IdSSLIOHandlerSocketOpenSSL1.host := 'smtp.gmail.com';
IdSSLIOHandlerSocketOpenSSL1.port := 587;
IdSSLIOHandlerSocketOpenSSL1.ssloptions.method := sslvSSLv3;
IdSSLIOHandlerSocketOpenSSL1.ssloptions.mode := sslmUnassigned;
end;
Mensaje := TIdMessage.Create( nil );
Mensaje.Clear;
Mensaje.From.Name := sDestino;
Mensaje.From.Address := sDestino;
Mensaje.Subject := sAsunto;
Mensaje.Body.Text := sMensaje;
Mensaje.Recipients.Add;
Mensaje.Recipients.Items[0].Address := sDestino;
if sAdjunto <> '' then
begin
if FileExists( sAdjunto ) then
Adjunto := TIdAttachmentfile.Create( Mensaje.MessageParts,sAdjunto );
end
else
Adjunto := nil;
try
if f1.SMTP.Connected then
f1.SMTP.Disconnect;
f1.SMTP.Connect;
except
raise Exception.Create( 'Error al conectar con el servidor.' );
end;
if f1.SMTP.Connected then
begin
try
f1.SMTP.Send( Mensaje );
except
raise Exception.Create( 'Error al enviar el mensaje.' );
end;
try
f1.SMTP.Disconnect;
except
raise Exception.Create( 'Error al desconectar del servidor.' );
end;
end;
if Adjunto <> nil then
FreeAndNil( Adjunto );
FreeAndNil( Mensaje );
FreeAndNil( f1.SMTP );
end;