Schau, wie man Roboter kostenlos herunterladen kann
Finden Sie uns auf Facebook!
und werden Sie Mitglied unserer Fangruppe
Interessantes Skript?
Veröffentliche einen Link auf das Skript, damit die anderen ihn auch nutzen können
Hat Ihnen das Skript gefallen?
Bewerten Sie es im Terminal MetaTrader 5
Bibliotheken

SMTP Mail Library - Bibliothek für den MetaTrader 5

Ansichten:
990
Rating:
(44)
Veröffentlicht:
2016.08.02 17:07
Aktualisiert:
2016.11.22 07:34
\MQL5\Include\ \MQL5\Scripts\
MailSend.mq5 (9.18 KB) ansehen
\MQL5\Libraries\
SMTPMailLibraries.ZIP (1298.99 KB)
Benötigen Sie einen Roboter oder Indikator, der auf diesem Code basiert? Bestellen Sie ihn im Freelance-Bereich Zum Freelance

Diese Bibliothek wurde entworfen um Mails zu versenden.

Das Funktionsbündel eerweitert die Möglichkeiten des traditionellen SendMail. Jetzt können Sie Nachrichten im Text- und HTML-Format senden. Nachrichten können an mehrere Empfänger gesendet werden. Sie können eine oder mehrere Dateien an Ihre Mail anhängen. SSL wird unterstützt.

Der DLL Quellcode wurde in Delphi XE4 unter Verwendung der Indy Bibliothek geschrieben.

Neben den Projektdateien sollten Sie die OpenSSL Bibliothek installieren.

Liste der Bibliotheksfunktionen:

 Funktion: Beschreibung
 MailConnect
 Stellt Verbindung mit Mailserver her
 MailSendText Sendet Texte
 MailSendHtml Sendet HTML-Nachrichten
 MailSendInlineTextFile Sendet Nachrichten mit eingefügten Textdateiinhalt
 MailSendInlineHtmlFile Sendet Nachrichten mit eingefügten HTML-Dateiinhalt
 MailErrorDescription Holt Fehlerbeschreibung zurück
 MailClose Schliesst Verbindung zum Mailserver

Fehlermeldungen:

 ConstantWert
Beschreibung
 MAIL_NO_CONNECTION
-2
 keine Verbindung
 MAIL_NO_INITIALIZATION-1 kein Objekt für SMTP-Server
 MAIL_NO_ERROR0 Kein Fehler
 MAIL_TIMEOUT1
 Verbindung wegen Time-Out unterbrochen
 MAIL_WRONG_LOGIN2
 long login/password
 MAIL_WRONG_HOST_NAME3
 falscher Hostname
 MAIL_HOST_NOT_FOUND60
 Host nicht gefunden

Beispielskript:

//+------------------------------------------------------------------+
//|                                                     MailSend.mq5 |
//|                                                        avoitenko |
//|                          https://www.mql5.com/en/users/avoitenko |
//+------------------------------------------------------------------+
#property copyright "avoitenko"
#property link      "https://www.mql5.com/en/users/avoitenko"
#property version   "1.00"
#property script_show_inputs 

#include <Trade\Trade.mqh>
#include <Arrays\ArrayString.mqh>
#include <SmtpMailLibrary.mqh>
//+------------------------------------------------------------------+
//|   ENUM_MESSAGE                                                   |
//+------------------------------------------------------------------+
enum ENUM_MESSAGE
  {
   MESSAGE_TEXT,           // Text
   MESSAGE_HTML,           // html
   MESSAGE_INLINE_TEXT,    // eingefügter Text
   MESSAGE_INLINE_HTML     // eingefügtes html
  };
//+------------------------------------------------------------------+
//|   Eingabeparameter                                               |
//+------------------------------------------------------------------+
input string   mail_options="=== Mail Options ===";      // Mail Optionen
input string   InpMailHost="smtp.gmail.com";             // Host
input int      InpMailPort=465;                          // Port
input string   InpMailUser="user@gmail.com";             // User
input string   InpMailPassword="password";               // Password
input string   InpMailFrom="";                           // Von (Text)
input string   InpMailSubject="Smtp Mail Bibliothek";       // Betreff (Text)
input string   InpMailTo="user@ukr.net";                 // Mail An
input uint     InpMailConnectionTimeout=5000;            // Verbindungs-Timeout, msec
input string   msg_options="=== Message Options ===";    // Nachrichten Optionen
input ENUM_MESSAGE InpMessageType=MESSAGE_HTML;          // Typ
input string   InpMessageAttachmentFiles="d:\\Temp\\dollar.bmp;d:\\Temp\\euro.bmp";// Angehängte Dateien
input string   InpMessageInlineFiles="d:\\Temp\\ReportTester-20066082.html";// Eingefügte Dateien
//+------------------------------------------------------------------+
//| Skript Programmstart Funktion                                    |
//+------------------------------------------------------------------+
void OnStart()
  {
   long smtp=0;//initialisieren

//--- Verbindung
   int err=MailConnect(smtp,InpMailHost,InpMailPort,InpMailUser,InpMailPassword,InpMailConnectionTimeout);
   if(err!=0)
     {
      Print("MailConnect Fehler: ",MailErrorDescription(err));
      return;
     }

   switch(InpMessageType)
     {

      //---
      case MESSAGE_TEXT:
        {
         //--- Klartext
         string text=StringFormat("Account: %d\r\nBalance: %.2f %s",AccountInfoInteger(ACCOUNT_LOGIN),AccountInfoDouble(ACCOUNT_BALANCE),AccountInfoString(ACCOUNT_CURRENCY));

         //--- Mail selbst senden
         err=MailSendText(smtp,InpMailUser,InpMailFrom,InpMailSubject,text,InpMessageAttachmentFiles);
         if(err!=0)
            Print("MailSendText Fehler: ",MailErrorDescription(err));
         else
            PrintFormat("Programm '%s' hat Mail gesandt an '%s'",MQLInfoString(MQL_PROGRAM_NAME),InpMailUser);

         //--- Mail an MailTo senden
         err=MailSendText(smtp,InpMailTo,InpMailFrom,InpMailSubject,text,InpMessageAttachmentFiles);
         if(err!=0)
            Print("MailSendText Fehler: ",MailErrorDescription(err));
         else
            PrintFormat("Programm '%s' hat Mail gesandt an  '%s'",MQLInfoString(MQL_PROGRAM_NAME),InpMailTo);
        }
      break;

      //---
      case MESSAGE_HTML:
        {
         //--- HTML erzeugen
         string html=BuildReport();
         //--- HTML senden
         err=MailSendHtml(smtp,InpMailTo,InpMailFrom,InpMailSubject,html,"");
         if(err!=0)
            Print("MailSendText Fehler: ",MailErrorDescription(err));
         else
            PrintFormat("Programm '%s' hat Mail gesandt an  '%s'",MQLInfoString(MQL_PROGRAM_NAME),InpMailTo);
        }
      break;

      //---
      case MESSAGE_INLINE_TEXT:
        {
         err=MailSendInlineTextFile(smtp,InpMailTo,InpMailFrom,InpMailSubject,InpMessageInlineFiles);
         if(err!=0)
            Print("MailSendText Fehler: ",MailErrorDescription(err));
         else
            PrintFormat("Programm '%s' hat Mail gesandt an  '%s'",MQLInfoString(MQL_PROGRAM_NAME),InpMailTo);
        }
      break;

      //---
      case MESSAGE_INLINE_HTML:
        {
         err=MailSendInlineHtmlFile(smtp,InpMailTo,InpMailFrom,InpMailSubject,InpMessageInlineFiles);
         if(err!=0)
            Print("MailSendText Fehler: ",MailErrorDescription(err));
         else
            PrintFormat("Programm '%s' hat Mail gesandt an  '%s'",MQLInfoString(MQL_PROGRAM_NAME),InpMailTo);
        }
      break;

     }

//--- Verbindung schliessen
   MailClose(smtp);
  }
//+------------------------------------------------------------------+
//|   Bericht Erzeugen                                               |
//+------------------------------------------------------------------+
string BuildReport()
  {
   CArrayString html;
//---   
   html.Add("<html><head><title>Report</title>");
   html.Add("<meta name=\"format-detection\" content=\"telephone=no\">");
   html.Add("<style type=\"text/css\" media=\"screen\">");
   html.Add("<!--");
   html.Add("td{font: 8pt Tahoma,Arial;}");
   html.Add("//-->");
   html.Add("</style>");
   html.Add("<style type=\"text/css\" media=\"print\">");
   html.Add("<!--");
   html.Add("td{font: 7pt Tahoma,Arial;}");
   html.Add("//-->");
   html.Add("</style>");
   html.Add("</head>");
   html.Add("<body topmargin=1 marginheight=1> <font face=\"tahoma,arial\" size=1>");
   html.Add("<div align=center>");
   html.Add(StringFormat("<div style=\"font: 18pt Times New Roman\"><b>%s</b></div>",AccountInfoString(ACCOUNT_SERVER)));
   html.Add("<table cellspacing=1 cellpadding=3 border=0>");
//---
   html.Add("<tr>");
   html.Add(StringFormat("<td colspan=2>A/C No: <b>%d</b></td>",AccountInfoInteger(ACCOUNT_LOGIN)));
   html.Add(StringFormat("<td colspan=6>Name: <b>%s</b></td>",AccountInfoString(ACCOUNT_NAME)));
   html.Add("<td colspan=2>&nbsp;</td>");
   html.Add(StringFormat("<td colspan=2 align=right>%s</td>",TimeToString(TimeCurrent())));
   html.Add("</tr>");
//---
   html.Add("<tr>");
   html.Add("<td colspan=13><b>Offene Trades:</b></td>");
   html.Add("</tr>");
//---
   html.Add("<tr align=center bgcolor=\"#C0C0C0\">");
   html.Add("<td>Ticket</td>");
   html.Add("<td nowrap>Open Time</td>");
   html.Add("<td>Type</td>");
   html.Add("<td>Size</td>");
   html.Add("<td>Symbol</td>");
   html.Add("<td>Price</td>");
   html.Add("<td>S/L</td>");
   html.Add("<td>T/P</td>");
   html.Add("<td>Price</td>");
   html.Add("<td nowrap>Commission</td>");
   html.Add("<td>Swap</td>");
   html.Add("<td>Profit</td>");
   html.Add("</tr>");
//---
   double Profit=0.0;
   int total=PositionsTotal();
   if(total == 0)
     {
      html.Add("<tr align=right><td colspan=13 nowrap align=center>No transactions</td></tr>");
     }
   else
     {
      CPositionInfo m_position;
      for(int i=0; i<total; i++)
        {
         m_position.SelectByIndex(i);

         //--- Farbe
         if((i&1)==0)html.Add("<tr align=right>");
         else html.Add("<tr bgcolor=#E0E0E0 align=right>");

         //--- data
         html.Add(StringFormat("<td>%d</td>",m_position.Identifier()));
         html.Add(StringFormat("<td>&nbsp;%s</td>",TimeToString(m_position.Time())));

         if(m_position.PositionType()==POSITION_TYPE_BUY) html.Add("<td>buy</td>");
         else html.Add("<td>sell</td>");

         html.Add(StringFormat("<td>%.2f</td>",m_position.Volume()));
         html.Add(StringFormat("<td>%s</td>",m_position.Symbol()));
         html.Add(StringFormat("<td>%.5f</td>",m_position.PriceOpen()));
         html.Add(StringFormat("<td>%.5f</td>",m_position.StopLoss()));
         html.Add(StringFormat("<td>%.5f</td>",m_position.TakeProfit()));
         html.Add(StringFormat("<td>%.5f</td>",m_position.PriceCurrent()));
         html.Add(StringFormat("<td>%.2f</td>",m_position.Commission()));
         html.Add(StringFormat("<td>%.2f</td>",m_position.Swap()));
         html.Add(StringFormat("<td>%.2f</td>",m_position.Profit()));
         html.Add("</tr>");
         //---
         profit+=m_position.Profit();
        }
     }
//---
   html.Add("<tr>");
   html.Add(StringFormat("<td colspan=2><b>Balance: %.2f</b></td>",AccountInfoDouble(ACCOUNT_BALANCE)));
   html.Add(StringFormat("<td colspan=5><b>Equity: %.2f</b></td>",AccountInfoDouble(ACCOUNT_EQUITY)));
   html.Add("<td colspan=3><b>Floating P/L:</b></td>");
   html.Add(StringFormat("<td colspan=4 align=right><b>%.2f</b></td>",profit));
   html.Add("</tr>");

//---
   html.Add("</table></div></font></body></html>");

//--- in einzuelnen String speichern
   string result="";
   total=html.Total();
   for(int i=0;i<total;i++)
      result+=html.At(i);

//--- Erledigt
   return(result);
  }
//+------------------------------------------------------------------+


Ergebnisse:

SMTP Mail Library

Übersetzt aus dem Russischen von MetaQuotes Ltd.
Originalpublikation: https://www.mql5.com/ru/code/11466

IcqMessenger IcqMessenger

System zum Erhalten von Informationen betreffend aktuellen Status offener Positionen, Konto, etc. sowie eine automatische Benachrichtigung über Operationen via ICQ.

Tally for Wins and Losses Tally for Wins and Losses

Möglichkeit eine Strichliste der Gewinne und Verluste zu führen.

MA World MA World

Dieser Expert kann auf allen Symbolen und TimeFrames laufen und verwendet die Kreuzung von zwei linearen gleitenden Durchschnitten als Esignal und einen exponentiellen gleitenden Durchschnitt als Trailing Stop.

Trailing Stop Module basierend auf Delta ZigZag Trailing Stop Module basierend auf Delta ZigZag

Modul für die Verfolgung von offenen Positionen basierend auf dem Delta ZigZag für MQL5 Wizard.