# Wago 750-8102 WagoAppMail Body



## Rawpnzl (10 Juli 2020)

Hallo zusammen,

wir würden gerne einmal am Tag eine Email absetzen. Das funktioniert soweit mit der WagoAppMail Bibliothek.

Es besteht aber der Wunsch Variablenwerte direkt in den Body der Email schreiben zu lassen, nur finde ich keinen Weg das umzusetzen. Als Workaround lassen wir diverse Variablen vorher in eine txt-Datei packen, damit diese als Anhang an die Email mitgesendet werden kann. Schöner wäre es aber diese Variablen im Emailtext zu integrieren. Geht das überhaupt?

Danke für die Mithilfe und viele Grüße


----------



## JanB1 (10 Juli 2020)

Gemäss der Beschreibung des Bausteins "MAIL_SMTP_Client" müsstest du doch einen Eingang "sMessage" haben? Damit und mit Concat solltest du doch deine Variablen in einen String einbinden können?


----------



## Rawpnzl (10 Juli 2020)

Hallo JanB1, danke für die Antwort. Mit Concat hatte ich das auch bereits versucht. Ich habe dazu testweise zwei Word Variablen in zwei Strings überführt und diese mit Concat zusammengeschrieben. Jedoch kann ich mit Concat nur 2 Strings zu einem zusammenführen. Ich bekomme damit nicht mehrere Strings in einen zusammen.


----------



## Otwin (10 Juli 2020)

Es hält dich niemand auf den Befehl mehrmals zu benutzen.
so zB.:
emailString := CONCAT(String1, String2);
emailString := CONCAT(emailString, String3);

es gibt von Wago meine ich aber auch eine Bibliothek, mit der man mehrere (glaube bis zu 9) Strings zusammensetzten kann.

Gruß
Otwin


----------



## Rawpnzl (10 Juli 2020)

Hallo Otwin,
danke für den Gedankenanstoß. Das wird dann aber seeehr ausufernd und bestimmt auch unübersichtlich. Ich stöbere aber mal nach der evtl. vorhandenen WAGO Bibliothek. Wenn alle Stricke reißen, dann wird es wohl nur mit der mehrfachen Nutzung von CONCAT gehen.
Danke


----------



## JanB1 (10 Juli 2020)

Du könntest auch mit ST und einer Schlaufe ein "Array of String" mehrmals über einen Concat laufen lassen.


----------



## JanB1 (13 Juli 2020)

Wie hast du's gelöst?


----------



## Rawpnzl (13 Juli 2020)

Hallo JanB1,
leider noch gar nicht, wollte mich heute weiterführend damit beschäftigen aber schaff es nicht. Im Laufe der Woche geht es weiter. Ich schreibe dann, wie ich das gelöst habe.

DANKE


----------



## Rawpnzl (15 Juli 2020)

Hallo zusammen,

ich habe es nun mit der "WagoAppString" gelöst. Dort wird Concat etwas erweitert und ich konnte mit Concat2, Concat3 .... Concat9 bis zu 9 Strings in einen neuen überführen. Mit Concat9 bleibt das ganze sogar noch recht übersichtlich.

Danke und viele Grüße


----------



## JoaBo (27 August 2020)

Hallo Rawpnzl,
hast du das Problem gelöst, dass der String sMessage nur 255 Zeichen haben darf? Vor diesem Problem stehe ich nämlich gerade, weil ich Meldungen im Body übertragen möchte die mehr Zeichen haben.
VG
Joachim


----------



## Rawpnzl (28 August 2020)

Hallo Joachim,

ich habe das Ganze mit der "WagoAppString" Bibliothek gelöst. Damit wird concat erweitert, mit dem man eigentlich nur 2 Strings zusammensetzen kann. Mit der Bibliothek ließen sich bis zu 9 Strings auf einmal verarbeiten (concat3, concat4 .... concat9).

Viele Grüße


----------



## JoaBo (30 August 2020)

Hallo Rawpnzl,

ja, Concat benutze ich auch um den Text zusammenzusetzen den ich per Mail versenden möchte. Aber den fertigen String den ich an sMessage im FbMail übergebe, kann nur 255 Zeichen lang sein, da sMessage ein MaxString ist. Oder liege ich hier falsch? Mein Text den ich im Mail-Body versenden möchte ist größer als 255 Zeichen. Da habe ich wohl keine Chance, oder? Den Text als Datei im Anhang zu senden ist in diesem Fall nicht gewünscht.

Viele Grüße


----------



## Rawpnzl (31 August 2020)

Hallo Joachim, ich habe mich auf die 255 max. Zeichen für den String beschränkt. Ich denke, da wird aktuell nicht mehr gehen, außer jemand hat noch eine andere Idee. Ich nutze die 255 Zeichen für eine tägliche Kurzübersicht der wichtigsten Werte. Die restlichen Werte wandern als .txt in den Anhang. 

Viele Grüße


----------



## Peter255 (5 September 2020)

Hallo,

mit der WagoAppMail kann man sehr wohl Nachrichten mit mehr als 255 Zeichen versenden.
Dafür muss man den FbSmptSend, der unter Advanced gelistet ist verwenden.
Über die Struktur typMessage wird dort pData als Pointer übergeben.
Zusätzlich werden die Länge der zu übermittelnden Daten und noch 3 weitere Parameter übergeben.
In meiner Anwendung habe ich   s_Message: STRING(1200) und typ_AdvMessage: WagoAppMail.typMessage deklariert.
Im Programm wird der Pointer auf s_Message  und die tatsächliche Stringlänge an den typ_AdvMessage übergeben.
typ_AdvMessage.pData := ADR(s_Message);
typ_AdvMessage.udiSize:= StrLength(s_Message, udiSize:= SIZEOF(s_Message));
Die weiteren Parameter von typ_AdvMessage belasse ich auf Initial-Wert.
typ_AdvMessage wird dann an  typMessage der Instanz von FbSmtpSend übergeben.


Grüße

Peter


----------



## Rawpnzl (7 September 2020)

Hallo Peter,

vielen Dank für Deinen Lösungsansatz :s12::s12::s12:. Aktuell habe ich mich mit dem 255-String "abgefunden", werde Deinen Weg aber auf jeden Fall ausprobieren.

Viele Grüße


----------



## Peter255 (7 September 2020)

Hallo,

da es hier auch um die Formatierung des zu sendenden Strings ging noch ein paar Hinweise.
Wie schon beschrieben eignen sich die Funktionen Concat1 bis Concate9 aus der WagoAPPString um Strings zusammen zu setzen.
Diese Funktionen benutze ich auch um eine einzelne Zeile der Mail zusammen zu setzen.
Für das Zeilenende definiere ich eine Konstante als String => s_CRLF: STRING(2):= '$0D$0A'; 
die ich dann am Zeilenende mit Concate anhänge.
Die Mail setze ich mit der Funktion StrAppend aus der WagoAPPString zusammen. indem ich die einzelen Zeilen aneinander hänge.
Sehr nützlich Funktionen sind auch die Funktionen Format1 bis Format9 aus der WagoAPPString.
Damit lassen sich Zeilen mit formatierter Ausgabe von Variablen darstellen. Das sieht dann etwa so aus.
String:= Format2(sFormat:= '%9.3lfkWh          %8.2lfEUR',ADR(Variable LREAL Vebrauch) , ADR(Variable LREAL Kosten))
Hier werden Zwei LREAL Variablen nämlich der Verbrauch mit 3 Nachkommastellen in kWh und die Kosten mit 2 Nachkommastellen in EUR
als String formatiert. Die Formatfunktion ist sehr umfangreich und man muss sich damit schon etwas beschäftigen.

Grüße

Peter


----------

