Hola,
Podrías hacer una función que se encargue de enviar el correo y manejar la excepción y cada vez que falle reintentar el envío.
algo así:
Código Delphi
[-]
const
MaxIntentos = 5;
..
function EnviarCorreo(var CanIntentos : Byte) : Boolean;
begin
try
result := true;
except
if CanIntentos < MaxIntentos then
result := false
else
raise exception.create('Mensaje de error');
end;
end;
..
procedure TuFuncionDeCorreo;
var
CanIntentos : Byte;
begin
..
CanIntentos := 0;
while not EnviarCorreo(CanIntentos) do
Inc(CanIntentos);
..
end;