Консультация № 188119
21.10.2015, 13:31
0.00 руб.
0 5 0
Здравствуйте! Прошу помощи в следующем вопросе: Отправка почты. Есть рабочий код, использую уже как бы давно. Тут потребовалосо сделать отправку на yandex, тут и возникли вопросы в связи с использованием SSL. Работаю в Delphi 7. При отправке пишет что не может соединиться с сервером. Просто смена порта с 25 на 465 не пойдет. Подскажите как правильно реализовать отправку.
Код который использую.
Код:

procedure TForm3.Mail;
begin
IdSMTP1.Host:=Edit1.Text;
IdSMTP1.Port:=StrToInt(Edit2.Text);

IdMessage1.CharSet:='windows-1251';
IdMessage1.ContentType:='text/plain';

IdSMTP1.AuthenticationType:=atLogin; // atNone
IdSMTP1.Username:=Edit3.Text;
IdSMTP1.Password:=Edit4.Text;

IdMessage1.From.Name:=ConvertToWIN1251(Edit5.Text);
IdMessage1.Subject:=ConvertToWIN1251(Edit11.Text);
IdMessage1.From.Address:=Edit6.Text;
IdMessage1.Organization:=ConvertToWIN1251(Edit7.Text);
IdMessage1.Recipients.EMailAddresses:=Edit8.Text+','+Edit9.Text;
IdMessage1.Body.Text:=Memo2.Text;

if FileExists(Edit12.Text,) then
TIdAttachment.Create(IdMessage1.MessageParts,Edit12.Text);

try
try
IdSMTP1.Connect(1000);
sleep(200);
Application.ProcessMessages;
IdSMTP1.Send(IdMessage1);
MessageBox(handle,PChar('Письмо отправлено.'+#13#10), PChar('Статус отправки!'), 64);
except on E:Exception do
begin
sleep(200);

MessageBox(handle,PChar(' Письма не отправлено.'+#13#10+
'Не возможно подключится к почтовому серверу.'+#13#10), PChar('Статус отправки!'), 48);
end;
end;
finally
if IdSMTP1.Connected then IdSMTP1.Disconnect;
end;
end;

Заранее благодарю за помощь.

Обсуждение

давно
Мастер-Эксперт
259041
7459
22.10.2015, 03:02
общий
22.10.2015, 03:05
Адресаты:
Любую тех-проблему решают пошагово с постепенным добавлением компонентов.
Сначала надо без Delphi-кода отработать алгоритм отправки вручную или с помощью простого, незаморочного почтового клиента (TheBat), разобраться с портами и SSL-протоколом.

Когда всё заработает стабильно (отправка на неск-ко разных адресов друзьям или на свой др ПЯ), автоматизируете свои действия с помощью программы. Опять же пошагово, постепенно наращивая код, с отображением промежуточных результатов, которые после отладки скроете коммент-символами. =Удачи!
давно
Посетитель
352040
133
22.10.2015, 06:12
общий
Адресаты:
Вот у меня и возник вопрос, какие компоненты добавить что бы отправка работала. Пока Yandex не перешел на шифрование SSL и 465 порт, у меня работало через 25 порт все нормально. Я потому код и привел, что он рабочий.
Об авторе:
Пользуюсь Delphi Enterprise Version7.
давно
Мастер-Эксперт
259041
7459
22.10.2015, 09:55
общий
Адресаты:
Я уже подсказал Вам верный путь: Отложите в сторону свой устаревший код, разберитесь с портами и шифрованием, опробуйте полу-автоматическую отправку с помощью простейшего почтового клиента. Затем его новые настройки авторизации внесёте в свой код, как поправки.

Я пользуюсь почтовым сервисом rambler.ru . Когда rambler меняет шифрование и порт, я читаю их инструкцию и вношу поправку в свой TheBat-клиент. Если кто-то из экспертов пользуется Yandex-почтой и Delphi Enterprise Version7, они поделятся с Вами опытом более подробно. А изучать чужие код и почтовые протоколы вряд ли кто-то захочет бесплатно в ущерб своей занятости.
К тому же, возникает подозрение, будто Вы пытаетесь автоматизировать рассылку спама, от которого многие из нас страдают.
давно
Мастер-Эксперт
425
4118
29.10.2015, 03:46
общий
Адресаты:
Вот здесь есть пример использования SSL: ссылка.
У Вас должна быть установлена библиотека OpenSSL, т.к. компоненты INDY используют именно её.
Об авторе:
Я только в одном глубоко убеждён - не надо иметь убеждений! :)
давно
Посетитель
352040
133
30.10.2015, 12:39
общий
Адресаты:
Брагодарю за подсказку. Буду разбираться. А то тут спам ботом обзыватся Еще раз спасибо.
Об авторе:
Пользуюсь Delphi Enterprise Version7.
Форма ответа