Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Delphi [игнор отключен] [закрыт для гостей] / ssl is not available on this server при отправке через TidSMTP / 12 сообщений из 12, страница 1 из 1
12.06.2018, 22:36
    #39659882
bilov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ssl is not available on this server при отправке через TidSMTP
Здравствуйте. Я отправляю письма с почты mail.ru, yandex.ru. отправляю с ssl так как иначе не дает.

код моей отправки...
Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
94.
95.
96.
97.
98.
99.
100.
101.
102.
103.
104.
105.
106.
107.
108.
109.
110.
111.
112.
113.
114.
115.
116.
117.
118.
119.
procedure SendOnEmail;
var
 IdSMTP1: TIdSMTP;
 idMessage1: TIdMessage;
 idAttach: TidAttachment;
 idText1: TidText;
 p: TidMessageParts;
 DT:TDateTime;
 IdSSLIOHandlerSocketOpenSSL1:TIdSSLIOHandlerSocketOpenSSL;
 ExFileName2:string;
 NeedCopy:boolean;
 sa:TStringDynArray;
 I:integer;
begin



    IdSMTP1 := TIdSMTP.Create(nil);

    try
        IdSMTP1.Host:= MailHost;
        IdSMTP1.Password:= EmpPsw;
        IdSMTP1.Username:= EmpUser;


        if
        (Pos('.yandex.ru',MailHost)>0) or
        (Pos('.mail.ru',MailHost)>0) or
        (Pos('.gmail.ru',MailHost)>0)
        then
        begin

          IdSSLIOHandlerSocketOpenSSL1 := TIdSSLIOHandlerSocketOpenSSL.Create(IdSMTP1);

          IdSSLIOHandlerSocketOpenSSL1.SSLOptions.Method := sslvTLSv1;
          IdSSLIOHandlerSocketOpenSSL1.SSLOptions.Mode := sslmUnassigned;
          IdSSLIOHandlerSocketOpenSSL1.SSLOptions.VerifyDepth := 0;

          IdSMTP1.IOHandler := IdSSLIOHandlerSocketOpenSSL1;
          if EmPort>0 then
          IdSMTP1.Port := EmPort
          else
          IdSMTP1.Port := 465;
          IdSMTP1.UseTLS := utUseExplicitTLS;
          IdSMTP1.ReadTimeout := 15000;
        end;




        idMessage1 := TIdMessage.Create(IdSMTP1);
        idMessage1.OnInitializeISO := LInitializeISO;
        idMessage1.From.Address := EmpEmail;
        idMessage1.From.Name := EmpName;//'Степан Иванов';
        idMessage1.Subject := EmSubject;//'Письмо с картинкой AComp'+FormatDateTime('dd.mm.yyyy hh:mm:ss',Now);

        idMessage1.CharSet := 'Windows-1251';
        idMessage1.ContentTransferEncoding  := '8bit';




        p := idMessage1.MessageParts;
        try
         // Load slBody with your HTML text...
          idText1 := TidText.Create(p);//, slBody);
          idText1.ContentType := 'text/html';
          idText1.CharSet := 'Windows-1251';
          idText1.ContentTransfer := '8bit';
          //if FileExists(EmBodyFileName) then
          idText1.Body.AddStrings(EmailBody);

          if EmailBody.Count>0 then
          if trim(FilePicture)<>'' then
          if not FileExists(FilePicture) then
          AddClSmallLog('А файла фотки тела письма "'+FilePicture+'" нету!')
          else
          begin
            idAttach := TIdAttachmentFile.Create(p,FilePicture);// TidAttachment.Create(p);

            idAttach.ContentType := 'image/jpeg';
            idAttach.ContentDisposition := 'inline';
            idAttach.ExtraHeaders.Values['content-id'] := ExtractFileName(FilePicture);

            idAttach.DisplayName := ExtractFileName(FilePicture);
            idMessage1.ContentType := 'multipart/mixed';
          end;
          //SetFilePath(s,False);


          if FileExists(ExFileName2) then
          TIdAttachmentFile.Create(idMessage1.MessageParts, ExFileName2);





          idMessage1.Recipients.EMailAddresses := Email;
          idSMTP1.Connect;
          idSMTP1.Send(idMessage1);

        finally
         if idSMTP1.Connected then
         idSMTP1.Disconnect;
         idSMTP1.Free;

        end;


    except
      on E:Exception do
      begin
       E.Message := STClCode +'- Ошибка E-mail: ' + E.Message;
       raise;
      end;
    end;


end;




На компе на котором скомпиллировано работает, и на одном другом тоже. На всех остальных нет, дает "ssl is not available on this server" при idSMTP1.Send(idMessage1);. У меня Delphi 2010 и Indy 10.5.5. Павда дома где Delphi XE7 ведет себя также. Если почта не такая а рабочая доменная типа @myfirm.ru то все норм как с IdSSLIOHandlerSocketOpenSSL1 так и без него.Скажите пожалуйста что тут можно сделать чтобы работала на всех.
...
Рейтинг: 0 / 0
13.06.2018, 08:44
    #39660011
Exteris
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ssl is not available on this server при отправке через TidSMTP
Библиотеки ssleay32.dll и libeay32.dll есть в системе?
...
Рейтинг: 0 / 0
13.06.2018, 09:52
    #39660054
L_argo
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ssl is not available on this server при отправке через TidSMTP
Вау !!! Я только хотел создать топик про сабж....
Меня конкретно интересует сабж для гмайл. На нем включен IMAP и разрешение работы с небезопасными приложениями.

Не смотря на обилие примеров, ни один из них так просто не работает.
Использование ИНДИ предусматривает установку ssleay32.dll и libeay32.dll. Но.... их разновидностей много и они специфичны для каждой ОС.
Мне не удалось подобрать вариант для Вин10. При этом у юзера могут быть какие угодно ОС: 32/64 XP/7/8/10/серверные.

Также есть полезный ресурс где много примеров.
Там можно выкачать некислого размера инсталл для СОМ-объекта EA_SendMail.DLL. с которым идут многочисленные примеры.
Делфийский пример таки работает. Но.... он открывает браузерное окно для входа в гугл-эккаунт, чтобы получить оттуда токен безопасности, который помещается в качестве пароля в TMail: oSmtp.Password := m_accessToken.
Как попроще получить этот токен, я пока не разобрался.

А еще встречал экзотический способ: выполнение powershell-скрипта. :)

Не исключаю, что у разных почтовых служб, публичных или корпоративных будут свои отличия и косяки.

зы: Куда катится ИТ ??? Мегабайты кода, куча внешних специфичных и глючных DLL, браузеров, JSON-парсеров и это только для отправки сраного письма.
...
Рейтинг: 0 / 0
13.06.2018, 12:09
    #39660178
X11
X11
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ssl is not available on this server при отправке через TidSMTP
L_argoМне не удалось подобрать вариант для Вин10. При этом у юзера могут быть какие угодно ОС: 32/64 XP/7/8/10/серверные.
Не забывайте о прокси, портах, брандмауэрах.
Стараюсь использовать ssleay32.dll и libeay32.dll последних версий. Не забывайте про x86/x64.
...
Рейтинг: 0 / 0
13.06.2018, 12:17
    #39660183
X11
X11
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ssl is not available on this server при отправке через TidSMTP
Не забывайте про тип шифрования, т.е. нужно выбирать TLS 2.1 / SSL 2.3.
...
Рейтинг: 0 / 0
13.06.2018, 12:17
    #39660186
L_argo
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ssl is not available on this server при отправке через TidSMTP
X11L_argoМне не удалось подобрать вариант для Вин10. При этом у юзера могут быть какие угодно ОС: 32/64 XP/7/8/10/серверные.
Не забывайте о прокси, портах, брандмауэрах.
Стараюсь использовать ssleay32.dll и libeay32.dll последних версий. Не забывайте про x86/x64.Порты и прокси не мешают.
Через EA_SendMail все работает.

Кароч универсального и надежного способа по сабжу наверно не существует в природе. :(
...
Рейтинг: 0 / 0
13.06.2018, 12:19
    #39660188
X11
X11
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ssl is not available on this server при отправке через TidSMTP
по SMTP:
https://support.google.com/mail/answer/7126229?hl

для SSL порт = 465, для TLS порт = 587
...
Рейтинг: 0 / 0
13.06.2018, 12:20
    #39660189
X11
X11
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ssl is not available on this server при отправке через TidSMTP
L_argoКароч универсального и надежного способа по сабжу наверно не существует в природе. :(

Всё существует. Только нужно документацию читать по конкретному серверу.
...
Рейтинг: 0 / 0
13.06.2018, 13:05
    #39660234
bilov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ssl is not available on this server при отправке через TidSMTP
Сейчас проверяю на одном компе. Раньше там не высылало на недоменную почту давало 'Read timed out'. После того как рядом с прогой положил libeay32.dll и ssleay32.dll такое стало давать только в первый раз после запуска проги, а потом нормально высылает. Это уже замечательно. Но при закрытии проги выдает сообщение 'Rutime error 216 at 00404DFA'. Нужно ещё узнать в какой конкретно момент это происходит. Это сообщение нужно будет обязательно убрать так как моя прога автоматически запускается, обо всех ошибках должна писать в лог и не выдавать никаких окон с сообщениями
...
Рейтинг: 0 / 0
13.06.2018, 13:47
    #39660277
_Vasilisk_
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ssl is not available on this server при отправке через TidSMTP
L_argoИспользование ИНДИ предусматривает установку ssleay32.dll и libeay32.dll. Но.... их разновидностей много и они специфичны для каждой ОС.Более того - эти библиотеки должны быть заточены целенаправленно под инди 20771195 , 20771658
...
Рейтинг: 0 / 0
13.06.2018, 13:56
    #39660288
L_argo
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ssl is not available on this server при отправке через TidSMTP
_Vasilisk_L_argoИспользование ИНДИ предусматривает установку ssleay32.dll и libeay32.dll. Но.... их разновидностей много и они специфичны для каждой ОС.Более того - эти библиотеки должны быть заточены целенаправленно под инди 20771195 , 20771658 Поставил.
Результат стал чуть другой:

Error connecting with SSL.
-- ОК --

Это лютый ппц, как для такой простой задачи....
У мну Вин10.
...
Рейтинг: 0 / 0
15.06.2018, 15:08
    #39661323
bilov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ssl is not available on this server при отправке через TidSMTP
Проверял на компах на которых глючило. Раньше там не высылало на недоменную почту давало 'Read timed out'. После того как рядом с прогой положил libeay32.dll и ssleay32.dll такое стало давать только в первый раз после запуска проги, а потом нормально высылает. Это уже замечательно. Но при закрытии проги выдает сообщение 'Rutime error 216 at 00404DFA'. Преодолеть это пока удалось только таким жестким способом
Код: pascal
1.
2.
3.
4.
procedure TForm1.FormDestroy(Sender: TObject);
begin
 Application.Terminate;
end;

Form1 - главная форма проги. У меня все важные компоненты динамически сознаются и в той же процедуре удаляются. Так что скорее всего это допустимо
...
Рейтинг: 0 / 0
Форумы / Delphi [игнор отключен] [закрыт для гостей] / ssl is not available on this server при отправке через TidSMTP / 12 сообщений из 12, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]