Para estos casos lo mejor es que pongas un "log", y así poder seguir lo que ha hecho realmente y si los ha enviado o ha ocurrido algún error.
Me refiero a un simple fichero de texto donde guardes cada paso que hace el programa, algo así como:
Y también, mientras pruebas y descubres cuál es el problema, deberías quitar el
try except end, para que salten los errores.
Código Delphi
[-]try log('Conectando...');
smtp.Connect();
log('Conectado.');
SMTP.Authenticate;
log('Aut...');
try log('Enviando...');
smtp.Send(mail);
log('Enviado.');
except
log('Error');
on E: Exception do
unmail := '';
end;
log('');
finally
log('Desconectando y liberando...');
if SMTP.Connected then SMTP.Disconnect;
smtp.free;
mail.free;
end;