Группа "Обмен опытом .и обсуждение индикаторов"

Рейтинг 16



Отправка почты с вложением из MT4.

Здравствуйте, написал небольшую утилиту (C# .NET 4.8)для отправки SMTP почты с вложением с вызовом из MQL.
В коде советника или индикатора необходимо запустить приложение с параметрами:

Как запустить:
1. Файл MailWithParams.exe нужно скопировать в папку MQL4\Files.
2. Вызвать приложение из MQL. Пример — индикатор, который при появлении новой свечи делает скрин и отправляет его почтой.


Пример использования:

#property strict
#property indicator_chart_window

bool New_Bar;

string _smtp = "smtp.yandex.ru";
int    _port = 465;
string _ssl = "true";
string _emailFrom = "from@yandex.ru";   //напишите адрес отправителя
string _emailFromPassword = "**************"; //напишите пароль отправителя
string _emailTo = "to@yandex.ru";  //напишите почту получателя
string _subject = Symbol();
string _message = "Hello";
string _attachmentFileName;

#import "shell32.dll"
int ShellExecuteW(int hwnd,string lpOperation,string lpFile,string lpParameters,string lpDirectory,int nShowCmd);
#import

int OnInit()
  {
   return(INIT_SUCCEEDED);
  }

int OnCalculate(const int rates_total,
                const int prev_calculated,
                const datetime &time[],
                const double &open[],
                const double &high[],
                const double &low[],
                const double &close[],
                const long &tick_volume[],
                const long &volume[],
                const int &spread[])
  {
   Fun_New_Bar();

   if(New_Bar==true)
     {
      TakeShot();
     }
   return(rates_total);
  }

void Fun_New_Bar()
  {
   static datetime New_Time=0;
   New_Bar=false;
   if(New_Time!=Time[0])
     {
      New_Time=Time[0];
      New_Bar=true;
     }
  }

void TakeShot()
  {
          _attachmentFileName = Symbol()+IntegerToString(Year())+IntegerToString(Month())+ IntegerToString(Day())+
                                IntegerToString(Hour())+IntegerToString(Minute())+".jpeg";
   string exePath = TerminalInfoString(TERMINAL_DATA_PATH)+"\\MQL4\\Files\\MailWithParams.exe";
   string params = _smtp + " " + IntegerToString(_port) + " " + _ssl + " " + 
                   _emailFrom + " " +  _emailFromPassword + " " + _emailTo + " " + _subject +" " + 
                   _message + " " + _attachmentFileName;
   WindowScreenShot(_attachmentFileName,1920,1080,0,2,1);
   Sleep(500);
   ShellExecuteW(NULL,NULL,exePath,params,NULL,0);
  }



3. Настроить почту у своего провайдера.

Пример для яндекса

Тут смысл весь в том, чтобы:
— разрешить использование почтовых клиентов и сторонних программ для работы с сервером
— создать пароль для сторонних программ.

4. Отслеживать ошибки при передаче аргументов можно в логах в папке Files.
-ошибка количества аргументов
-ошибка порта — только цифры
-ошибка наличия файла
-ошибка авторизации

5. Ваши учетные данные мне не нужны. Это видно в Исходном коде

Для создания утилиты использовал:
metanit
opentraders

Файлы:

MailWithParams.exe
Screener.mq4 (1 Kb)

P.S. замечания/пожелания кидайте в комменты.
Всем счастья*hi* 
  • +3
  • Просмотров: 505
  • 7 июня 2023, 17:18
  • Enot-pipsun
Понравилcя материал? Не забудьте поставить плюс и поделиться в социальной сети!

Вступите в группу "Обмен опытом .и обсуждение индикаторов", чтобы следить за обновлениями
ПРИСОЕДИНИТЬСЯ К ГРУППЕ
присоединиться
Следующая запись в группе  
Как сменить звуковой файл?
06 февраля 2022
29 сентября 2023

Брокер для ваших роботов, 15 лет на рынке

Комментарии (0)


Зарегистрируйтесь или авторизуйтесь, чтобы оставить комментарий