Гость
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Отправка письма через SMTP на office365 / 3 сообщений из 3, страница 1 из 1
06.08.2021, 20:28
    #40089277
SilverShield
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Отправка письма через SMTP на office365
Доброго дня. Коллеги, может у кого есть опыт работы с почтой office365 по smtp.
Есть код, проводящий отправку тестового письма. Он срабатывает для gmail, yandex, mail.ru, но для почты smtp.office365.com возвращает ошибку "office365 smtp error:1408F10B:SSL routines:SSL3_GET_RECORD:wrong version number"

В требованиях Офис365 указано, что порт 587 и требуется TLS версии не ниже 1.2. Это соблюдено. Может в указании метода TLS я где-то ошибаюсь?

Собственно код ниже:

Код: 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.
var
    fIdSSLIOHandlerSocket: TIdSSLIOHandlerSocketOpenSSL;
    fIdSMTP: TIdSMTP;
    fIdMessage: TIdMessage;
begin
  fIdSMTP := TIdSMTP.Create(nil);
  fIdSSLIOHandlerSocket := TIdSSLIOHandlerSocketOpenSSL.Create(fIdSMTP);
  fIdSSLIOHandlerSocket.SSLOptions.Method := sslvTLSv1_2; //sslvTLSv1
  fIdSSLIOHandlerSocket.SSLOptions.Mode:= sslmUnassigned;
  fIdSMTP.IOHandler:= fIdSSLIOHandlerSocket;
  fIdSMTP.ConnectTimeout:= 5000;
  fIdSMTP.UseTLS := utUseImplicitTLS; //utUseExplicitTLS

  with fIdSMTP do
  begin
    Host := 'smtp.office365.com';
    Port := 587;
    AuthType := satDefault; //atLogin;
    Username := aEmailParam.EmailUserName;
    Password := aEmailParam.EmailPassword;

    HeloName := 'fto';
  end;

  //Формируем письмо для отправки
  fIdMessage := TIdMessage.Create(nil);
  try
    with fIdMessage do
    begin
      Body.Text := aBodyEng;
      From.Text := aEmailParam.EmailUserName;
      Recipients.EMailAddresses := aRecipients;
      Subject := aSubject;
    end;

    //отправляем сообщение
    if not fIdSMTP.Connected then
    begin
      try
        fIdSMTP.Connect;
      except
        on E: Exception do
          ResStr := ResStr + E.Message;
      end;
    end;

    try
      if fIdSMTP.Connected then
      begin
        fIdSMTP.Send(fIdMessage);
        Result := true;
      end;
    finally
      fIdSMTP.Disconnect;
    end;

  finally
    FreeAndNil(fIdMessage);
  end;

  if assigned(fIdSSLIOHandlerSocket) then
    FreeAndNil(fIdSSLIOHandlerSocket);
  if assigned(fIdSMTP) then
    FreeAndNil(fIdSMTP);
...
Рейтинг: 0 / 0
06.08.2021, 21:15
    #40089285
_Vasilisk_
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Отправка письма через SMTP на office365
...
Рейтинг: 0 / 0
07.08.2021, 09:12
    #40089316
DmSer
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Отправка письма через SMTP на office365
Может библиотеки SSL старые. Может версия Indy старая. Может порт не тот (на яндексах, мэйлах достаточно 25-го порта для SMTP)
...
Рейтинг: 0 / 0
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Отправка письма через SMTP на office365 / 3 сообщений из 3, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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