Buenas.
No es la solución a tu problema, pero yo no usaría esta línea:
Código Delphi
[-]result:=SMTP.MailFrom(MailFrom, Length(MailFrom)) and SMTP.MailTo(MailTo) and
SMTP.MailData(sl);
En su lugar, usaría tres diferentes comprobando cada paso:
Código Delphi
[-]
IF NOT SMTP.MailFrom (MailFrom, Length (MailFrom)) THEN EXIT (FALSE);
IF NOT SMTP.MailTo (MailTo) THEN EXIT (FALSE);
IF NOT SMTP.MailData (sl) THEN EXIT (FALSE);
Aunque he puesto "EXIT (FALSE)" yo usaría una excepción o similar para indicar dónde se produjo el error.
Por otro lado, Hotmail no se caracteriza, precisamente, por ser un buen servidor de correos. Por lo que sé, es el que más problemas da, desde siempre.