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;
begin
tipoCorreo:= averiguarTipoCorreo(sDestino);
if tipoCorreo = 'hotmail' then 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 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 begin
SMTP := TIdSMTP.Create( nil );
SMTP.Username := sUsuario;
SMTP.Password := sClave;
SMTP.Host := sHost;
SMTP.Port := 587;
end;
Mensaje := TIdMessage.Create( nil );
Mensaje.Clear;
mensaje.ContentType := 'text/html';
mensaje.CharSet := 'UTF-8';
Mensaje.From.Name := sUsuario; Mensaje.From.Address := sDestino;
Mensaje.Subject := sAsunto;
Mensaje.Body.Text := sMensaje;
Mensaje.Recipients.Add;
Mensaje.Recipients.Items[0].Address := sDestino;
try
SMTP.Connect;
except
end;
if SMTP.Connected then
begin
try
SMTP.Send( Mensaje );
except
end;
try
SMTP.Disconnect;
except
end;
end;
end;