powered by simpleCommunicator - 2.0.37     © 2025 Programmizd 02
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Отправка письма через SMTP на office365
3 сообщений из 3, страница 1 из 1
Отправка письма через SMTP на office365
    #40089277
SilverShield
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Доброго дня. Коллеги, может у кого есть опыт работы с почтой 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
Отправка письма через SMTP на office365
    #40089285
Фотография _Vasilisk_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
Отправка письма через SMTP на office365
    #40089316
DmSer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Может библиотеки SSL старые. Может версия Indy старая. Может порт не тот (на яндексах, мэйлах достаточно 25-го порта для SMTP)
...
Рейтинг: 0 / 0
3 сообщений из 3, страница 1 из 1
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Отправка письма через SMTP на office365
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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