Зачастую, программы на delphi используют отправку писем средствами email. В этой статье будет полностью рассказано, как отправляется ваше письмо другому пользователю. при помощи delphi. При этом, будем использовать только стандартные компоненты делфи.
Для начала создадим новый проект и назовём его \»Отправка писем средствами delphi\». Затем, на форму необходимо перенести несколько компонентов 1x Memo, 3x Edit, 2x Botton, а также необходимо перенести IdSMTP, IdAntiFreeze, IdMessage. Далее, на событие onclick любой кнопки пишем:
//выбираем SMTP сервер. В данный момент стоит yandex. IdSMTP1.Host:= 'smtp.yandex.ru'; //ваш логин (для некоторых необходимо писать с доменом). IdSMTP1.Username:= 'test@yandex.ru'; //пароль от почты. IdSMTP1.Password:= 'qwerty123'; //порт, рекомендуем использовать 587. IdSMTP1.Port:=587; //в Edit2 будет вписываться тема письма. IdMessage1.Subject:= Edit2.Text; //в Edit1 будет адрес получателя. IdMessage1.Recipients.EMailAddresses:= Edit1.Text; //ваш email с которого идёт отправка. IdMessage1.From.Address:= 'test@yandex.ru'; //в memo1 будет текст который вы ходите послать. IdMessage1.Body.Text:= memo1.Text ; //в Edit3 будет ваша электронная подпись (Имя). IdMessage1.From.Name:= Edit3.Text; //соединяемся IdSMTP1.connect; //отправляем IdSMTP1.Send(IdMessage1); //отсоединяемся IdSMTP1.Disconnect;
Если IdMessage отображает знаки вопроса
Данный баг связан с тем, что Вы вписываете русские буквы, а компонент memo не может их грамотно прочитать, для этого необходимо указать кодировку Utf8.
// устанавливаем кодировку IdMessage1.Charset:='UTF-8'; // переводим текст в нужную кодировку IdMessage1.Body.Text:=UTF8Encode(memo1.text);
Socket Error # 10054
Для исправления этой ошибки необходимо использовать отправку письма без SSL, как правило, для этого существуют несколько портов. У яндекса это порт 587.
//Используем порт без SSL IdSMTP1.Port:=587;