Скачать MetaTrader 5
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий
Задействуй с пользой свободные компьютеры. Подключись к MQL5 Cloud Network!
rabanik
426
rabanik 2014.10.17 11:25 

Добрый день, коллеги.

Прошу помочь с отправкой писем на мой личный почтовый адрес системой. 

Проблема в том, что советник отсылается большое количество писем (>10000), и сервер ДЦ блокирует отправку писем. 

Я написал код, дайте ему совю профессиональную оценку. Спасибо!:

//Описание переменных

   string TopicEmailSend       = ""; //Тема письма            

   string CurrentTopicEmailSend= ""; //Текущая тема письма
   string CurrentTextEmailSend = ""; //Текущий текст письма

   static datetime dayTime     = 0;

//Описание функции Init

   int init()
     {
  

      dayTime=iTime(Symbol(),PERIOD_D1,0);

...


//Описание функции Start

  int start()

     {
      if(iTime(Symbol(),PERIOD_D1,0)!=dayTime)
        {
         dayTime=iTime(Symbol(),PERIOD_D1,0);  // поймали начало нового дня, обнулим переменные для отправки письма
         TopicEmailSend=""; CurrentTopicEmailSend=""; CurrentTextEmailSend="";

        }

...

//Условие выполняется и отсылаем письмо с уведомлением

//Кусок кода:

       CurrentTopicEmailSend = "Est igra: "+Symbol();
       CurrentTextEmailSend  = "Para: "+Symbol();

       SendMail_(CurrentTopicEmailSend,CurrentTextEmailSend);

//Собственно сама функция отправки письма

   void SendMail_(string CurrentTopicEmailSend,string CurrentTextEmailSend)
     {
      if(TopicEmailSend!=CurrentTopicEmailSend)
        {
         TopicEmailSend=CurrentTopicEmailSend;
         SendMail(TopicEmailSend,CurrentTextEmailSend+", time server: "+Hour()+":"+Minute());
        }

     }

Суть в следующем, каждый час система запоминает переменную с отправленной темой.

И если письмо с такой темой уже отправлено, советник письмо по новой не должен отправлять, но он почему то отправляет. Вот не могу понять почему (((

Может подскажите ошибку, или поделитесь своим кодом отправки писем.

Спасибо, большое!

Алексей Тарабанов
7220
Алексей Тарабанов 2014.10.17 14:59  
Попробуйте убрать Static в глобальной секции - в mql4 этот режим использования памяти реализован весьма "специфично", вследствие чего  dayTime=iTime(Symbol(),PERIOD_D1,0); в init, предположительно,  может игнорироваться. 
rabanik
426
rabanik 2014.10.18 06:38  
Tara, спасибо огромное ) А так, сам алгоритм написан грамотно?
rabanik
426
rabanik 2014.11.01 19:17  
блин убрал, этот чертов Static все равно проблема осталась. Поделитесь пожалуйста своим кодом. Как Вы контролируете массовую отправку писем? Спасибо.
Алексей Тарабанов
7220
Алексей Тарабанов 2014.11.01 20:34  
rabanik:
блин убрал, этот чертов Static все равно проблема осталась. Поделитесь пожалуйста своим кодом. Как Вы контролируете массовую отправку писем? Спасибо.

Никак не контролирую, поскольку я писем не рассылаю. 

Фрагменты кода, вроде-бы корректны; но я Вам предлагаю выложить весь код, удалив, при необходимости "граальные" фрагменты (не увлекайтесь и обязательно укажите, что фрагмент удален), а лучше - просто весь код через SRC, либо в приложении.  

Vitalie Postolache
11139
Vitalie Postolache 2014.11.01 20:48  

Сервер ДЦ блокирует отправку писем ( Помогите советом!

Как интересно...

Письма не проходят через сервер ДЦ, так, к сведению.

Алексей Тарабанов
7220
Алексей Тарабанов 2014.11.01 21:07  
evillive:

Как интересно...

Письма не проходят через сервер ДЦ, так, к сведению.

ДЦ ни при чем. Отправка письма на каждом тике. 

Спам блокируется  почтовым сервером. 

rabanik
426
rabanik 2014.11.04 18:51  
а может использовать функцию Sleep() или функцию RefreshRates(); а ? Помогите плиззззззззз!
Vitalie Postolache
11139
Vitalie Postolache 2014.11.04 19:27  
rabanik:
а может использовать функцию Sleep() или функцию RefreshRates(); а ? Помогите плиззззззззз!
лучше персмотреть условия, по которым сообщение отправляется.
/
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий