sólo una pequeña correción
Código:
try
smtp.Connect();
smtp.Send(msg);
// smtp.Disconnect; si se produciera un error no podrias volver a conectar
except
/// Aqui capturas las excepciones, osea los errores que te da,
por ejemplo:
on E: EIdSocketError do begin
Showmessage('No se ha podido enviar el email.'+ #13 +
'Host desconocido o incorrecto.');
end
if smtp.connected then smtp.Disconnect; //