Эта строка неверна:
IdSMTP1->Connect(1000);
В Indy 9, Connect()
имел перегрузку, которая приняла тайм-аут в качестве входа. Но в Indy 10 эта перегрузка была удалена, а параметр timeout был переопределён как свойство ConnectTimeout
.
Ваш исходный код компилируется, потому что Connect()
в Indy 10 имеет перегрузку, которая принимает имя хоста String
в качестве ввода перезаписывается свойство Host
, а (Ansi|Unicode)String
имеет конструктор, который принимает int
в качестве ввода. Таким образом, ваш код эффективно выполняет это
IdSMTP1->Connect(String(1000));
, которое пытается подключиться к имени хоста с именем "1000"
, игнорируя имя хоста "smtp.office365.com"
, которое вы присвоили свойству Host
. Вот почему вы получаете сокет с ошибкой 11001.
Вам нужно заменить неправильную строку следующим кодом:
//IdSMTP1->Connect(1000);
IdSMTP1->ConnectTimeout = 1000;
IdSMTP1->Connect();