Как отправить сообщение электронной почты с помощью smtp серверного компонента Инди?

Так как демонстрация, данная в http://www.indyproject.org/Sockets/Demos/index.EN.aspx только, сохраняет полученный поток в файл, я не знаю, как эффективно отправить тот поток как почту.

Кто-либо мог учить меня, как сделать это или указать на меня еще некоторый полный пример?

9
задан eKek0 14 March 2010 в 01:58
поделиться

2 ответа

Компонент SMTP сервер не может отправлять почту - он может только ее получать. Для отправки почты вам понадобится клиентский компонент SMTP (TidSMTP). Почтовый сервер при отправке почты действует как SMTP-клиент.

9
ответ дан 4 December 2019 в 09:36
поделиться

Вот полный пример того, как отправить электронное письмо:

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;
.
.

(Я знаю, что WITH не одобряют, но я обычно использую его в таких случаях, когда нет сомнений в том, что происходит, и где нет (или просто бесконечно малый) шанс двусмысленности)

13
ответ дан 4 December 2019 в 09:36
поделиться
Другие вопросы по тегам:

Похожие вопросы: