Aquí está un ejemplo completo de cómo enviar un correo electrónico:
VAR SMTP : TIdSMTP;
VAR MSG : TIdMSG;
.
.
MSG:=TIdMSG.Create(NIL);
TRY
WITH MSG.Recipients.Add DO BEGIN
Name:='<Name of recipient>';
Address:='<Email address of recipient>'
END;
MSG.BccList.Add.Address:='<Email address of Blind Copy recipient>';
MSG.From.Name:='<Name of sender>';
MSG.From.Address:='<Email address of sender>';
MSG.Body.Text:='<Message Body>';
MSG.Subject:='<Subject of message>';
SMTP:=TIdSMTP.Create(NIL);
TRY
SMTP.Host:='x.x.x.x'; // IP Address of SMTP server
SMTP.Port:=25; // Port address of SMTP service (usually 25)
SMTP.Connect;
TRY
SMTP.Send(MSG)
FINALLY
SMTP.Disconnect
END
FINALLY
SMTP.Free
END
FINALLY
MSG.Free
END;
.
.
(Sé que con está mal visto, pero por lo general lo uso en casos como éste, donde no hay ninguna duda en cuanto a lo que está pasando , y donde no hay (o simplemente es infinitesimal) una posibilidad de ambigüedad)
Para ampliarlo, Indy tiene un componente TIdSMTPRelay que se debe usar en el extremo del servidor para reenviar correos electrónicos recibidos a otros servidores. –