|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
|||
|
|||
Indy10 5491 и Delphi 7
Добрый день. Скачал последнюю, на сегодняшний день, версию indy с сайта https://indy.fulgan.com/ZIP/. Установил на delphi 7. Все четко. Прошу помощь допилить мой код. Уже разобрался, как отправлять сообщения. Проблему с кодировкой тоже решил (В модуле IdGlobalProtocols.pas находим функцию IdGetDefaultCharSet и меняем строку LANG_RUSSIAN: Result := idcsKOI8_R; на LANG_RUSSIAN: Result := idcsWINDOWS_1251; )
Не могу разобраться, как прикреплять к сообщению файлы и отправлять их. Поиска в в google наткнулся на следующий код: Код:
TIdAttachmentFile.Create(IdMessage1, 'D:\Проба.zip'); Как мне адаптировать данный код в мой проект. Вот текущий код моего проекта. Отправка работает отлично. Осталось разобраться только с вложениями. На форме располагаются компоненты TIdSMTP, TIdMessage1, TIdSSLIOHandlerSocketOpenSSL Код:
procedure TMail.Button2Click(Sender: TObject); begin IdMessage1:=TIdMessage.Create; IdMessage1.From.Address:='marat.tuhtarov@yandex.ru'; IdMessage1.From.Name:='Злой админ'; IdMessage1.Recipients.EMailAddresses:='pirat03071988@mail.ru'; IdMessage1.ContentType:='text/plain'; IdMessage1.CharSet:='windows-1251'; IdMessage1.Body.Text:='ТЕСТ'; IdMessage1.Subject:='Рассылка новых объектов'; IdMessage1.Date:=now; {настройка компонентов перед отправкой} IdSMTP := TIdSMTP.Create(nil); IdSMTP.Host:='smtp.yandex.ru'; IdSMTP.Port:=465; IdSMTP.Username:='marat.tuhtarov'; IdSMTP.Password:='MyPassword'; IdSMTP.AuthType:=satDefault; {это необходимо использовать для SSL} IdSSLIOHandlerSocketOpenSSL:=TIdSSLIOHandlerSocketOpenSSL.Create(nil); IdSSLIOHandlerSocketOpenSSL.Destination :=IdSMTP.Host+':'+IntToStr(IdSMTP.Port); IdSSLIOHandlerSocketOpenSSL.Host:=IdSMTP.Host; IdSSLIOHandlerSocketOpenSSL.Port:=IdSMTP.Port; IdSSLIOHandlerSocketOpenSSL.DefaultPort:=0; IdSSLIOHandlerSocketOpenSSL.SSLOptions.Method:=sslvTLSv1; IdSSLIOHandlerSocketOpenSSL.SSLOptions.Mode:=sslmUnassigned; IdSMTP.IOHandler:=IdSSLIOHandlerSocketOpenSSL; IdSMTP.UseTLS:=utUseExplicitTLS; try {отправляем письмо} IdSMTP.Connect(); except MessageBox(handle,pchar('ОШИБКА!!! Подключение к SMTP серверу не удалось'+#10+#13+ 'Проверьте настройки программы, а так же не блокируется ли'+#10#13+ 'порт SMTP сервера антивирусом или файреволом(брандмауэром)'), pchar(Mail.Caption), 48); exit; end; IdSMTP.Send(IdMessage1); Application.ProcessMessages; IdSMTP.Disconnect; end; Код:
procedure TMail.FormClose(Sender: TObject; var Action: TCloseAction); begin idMessage1.Free; IdSSLIOHandlerSocketOpenSSL.Free; idSMTP.Free; end; С уважением, Тухтаров М.Р. |
#2
|
|||
|
|||
Я так понимаю, что просто добавить код, который ты нашел.
Вот тут есть какой-то пример: https://stackoverflow.com/questions/...t-working?rq=1 Не знаю, для какой версии Инди, там могут быть небольшие различия. ЗЫ. Походу, ты используешь компоненты, созданные в Design-time. Соответсвенно, при формировании следующего сообщения не забывай чистить IdMessage. |