Предлагаю к обсуждению интерфейс (API) для чтения почты терминала из советников и индикаторов. Предупреждаю сразу - можно будет только узнать факт прихода почты и прочесть имя отправителя и тему письма.
Впрочем даже этой информации достаточно чтобы советник увидев тему "перезагрузка сервера/reboot of server" сумел принять меры.
итак:
// MailReaderInit инициализация ридера, должна быть вызвана до любой другой
// вернёт дексриптор который надо использовать в прочих функциях или INVALID_HANDLE если что-то пошло не так
// аргументы : size - на сколько писем держать буфер;
// lastknown - время последнего уже прочитанного письма; письма ранее этого времени не будут помещаться в очередь
int MailReaderInit(int size,datetime lastknown);
// MailReaderNr проверить почту - вернёт кол-во писем в приёмном буфере
int MailReaderNr(int handle);
// MailReaderRead прочесть письмо
// письма читаются поочередно, от самых старых к самым новым
// функция вернёт время получения письма и через аргументы-ссылки тему и отправителя
// если писем нет, то вернёт (datetime)0
datetime MailReaderRead(int handle,string &from,string &subj);
// MailReaderDone - завершение ридера и освобождение ресурсов
// должна в обязательном порядке вызываться в deinit, иначе память будет течь
void MailReaderDone(int handle);
как-то так :-)
к обсуждению - состав API и именование функций. Ах да, ридер думаю закрутить в отдельном треде чтоб не отъедать у советников время на физику разбора почты
Реализовывать буду неторопясь, есть сейчас более актуальные для меня вещи, так что бета-версия в лучшем случае к февралю
обсуждать можно тут в коментах или на ветке форума https://www.mql5.com/ru/forum/71791