Для работы с SMTP-клиентами в языке Fore предназначен интерфейс INetSmtpClient. Для отправки почты с использованием SMTP-клиента в коде необходимо реализовать следующее:
Создать адреса электронной почты отправителя и получателя.
Создать сообщение электронной почты, заполнить его параметры (указать отправителя, получателя, заголовок, текст сообщения и другие необходимые параметры).
Инициализировать SMTP-клиент, настроить его параметры (указать SMTP-сервер и порт, через которые осуществляется отправка, при необходимости указать другие параметры).
Отправить сообщение.
В общем виде реализация данного алгоритма выглядит следующим образом:
Sub SendMessage;
Var
From_, To_: INetMailAddress;
Message: INetMailMessage;
Client: INetSmtpClient;
Credential: INetNetworkCredential;
Begin
From_ := New NetMailAddress.Create("ivanov@server.ru");
To_ := New NetMailAddress.Create("petrov@server.ru");
Message := New NetMailMessage.CreateWithFromAndTo(From_, To_);
Message.Subject := "Тестовое письмо";
Message.Body := "Текст письма";
Client := New NetSmtpClient.CreateWithHost("example.server.ru");
Client.Send(Message);
End Sub SendMessage;
Если требуется авторизация на SMTP-сервере, то дополните код следующими образом:
//...
Client := New NetSmtpClient.CreateWithHost("example.server.ru");
Credential := New NetNetworkCredential.Create("ivanov", "password", "work");
Client.ThisHostCredentials("") := Credential;
//...
По умолчанию работа с SMTP-серверами осуществляется через порт «25». Это базовый порт для SMTP и в целях безопасности может быть закрыт на SMTP-сервере. Для работы через другой порт укажите его номер в свойстве Port или используйте для инициализации SMTP-клиента метод CreateWithHostAndPort. При работе через порт «465» также требуется включить поддержку SSL-шифрования, для этого в свойстве EnableSsl установите значение True.
//...
Client := New NetSmtpClient.CreateWithHost("example.server.ru");
Credential := New NetNetworkCredential.Create("ivanov", "password", "work");
Client.Port := 465;
Client.EnableSsl := True;
Client.ThisHostCredentials("") := Credential;
//...
Если SMTP-сервер использует протокол аутентификации пользователя, то укажите его наименование при задании учетных данных:
//...
Client.ThisHostCredentials("Kerberos") := Credential;
//...
Ниже приведен список настроек SMTP-серверов, которые будет необходимо указать в коде для отправки сообщений:
SMTP-сервер | Порт | SSL | Описание |
smtp.gmail.com | 587(TLS), 465(SSL) | + | SMTP-сервер компании Google. |
smtp.mail.com | 465 | + | SMTP-сервер компании Mail.ru. |
smtp.yandex.ru | 465 | + | SMTP-сервер компании Яндекс. |
smtp.mail.yahoo.com
plus.smtp.mail.yahoo.com |
465 | + | SMTP-сервер компании Yahoo. |
См. также: