NEWS
Email auslesen und gewissen Inhalt in Datenpunkt
-
Hallo zusammen,
ich möchte EMail eines bestimmten Absenders (beispiel@gmx.de) bei Emfang auslesen.
Diese enthält immer eine Bestellbestätigung und beinhaltet immer sowas:Montag, 27.01.2020 1x - GE Hähnchenbrustfilet mit Sauce und (03) Blumenkohl in feiner Creme (M) dazu Kartoffeln (Menü K1) Dienstag, 28.01.2020 1x - V Käsespätzle (ohne Zwiebeln) (G,a,Ei,M) Blattsalat Dressing (SO2,01,03,05) (Menü K2)
Nun möchte ich genau diese Daten in Datenpunkte schreiben, damit ich sie im VIS darstellen kann.
Kann mir jemand vielleicht erklären, wie ich das hinbekommen könnte?
PS: die Bestellseite kann ich zwar auch im IFRAME darstellen, jedoch muss man sich da einloggen und dadurch nicht auf Dauer lauffähig.
-
ok ich habe dieses Script installiert:
https://github.com/chirag04/mail-listener2Es funktioniert. Ich habe nun den ganzen Text der Email in einem Datenpunkt.
Nun muss ich den Text den ich brauche so extrahieren, das er wieder sauber geloggt wird (history.0?)
Mir fällt da nur ein, es wahrscheinlich mit dem Parser zu machen? Regex, aber da bin ich totaler Anfänger.Meine Vorstellung:
- Datenpunkt mit parser auslesen
- in datenpunkt ergebnisse schreiben
- mit history loggen
- im VIS einbinden
-
@bug77 wie hast du das installiert über npm und einfach in der javascript instanz im setting angegeben
kannst du schon mails empfangen ?
-
Jap genau so. Zuerst hat es nicht getan, im log Stand ein Fehler wegen fehlenden Rechten.
Dazu muss im Gmail Axxount IMAP aktiviert werden und auch der Zugriff für drittapps ohne 2-Faktor aktiviert werden, dann kommt alles rein.
-
@bug77 das bedeutet, du bekommst jetzt einen datensatz, wenn ein mail ankommt - jetzt müßte was aussortiert werden
- email absender oder subject - wie erkennst du das richtige mail
- anschliessend , wenn das richtige mail da ist, den inhalt noch aufbereiten und wohin und wie speichern - nur in einen datenpunkt oder eine art tabelle mit first in last out
kannst du mal eine solche angekommende nachricht loggen und posten
-
Ja ich bekomme auch Absender und Titel in separaten Datenpunkten.
Jedoch reicht der Datenpunkt mit dem Text, da man auf den Inhalt triggern kann.So sieht es immer aus, es ist immer die gleiche Mail, ich muss halt die Tage extrahieren und in eine Tabelle eingetragen bekommen:
vielen Dank für ihre Bestellung. Ihre Bestellung für den Zeitraum vom 27.01.2020 bis zum 02.02.2020 setzt sich wie folgt zusammen: Montag, 27.01.2020 1x - GE Hähnchenbrustfilet mit Sauce und (03) Blumenkohl in feiner Creme (M) dazu Kartoffeln (Menü K1) Dienstag, 28.01.2020 1x - V Käsespätzle (ohne Zwiebeln) (G,a,Ei,M) Blattsalat Dressing (SO2,01,03,05) (Menü K2) Donnerstag, 30.01.2020 1x - R Burgerpattie (Sen) Burgerbrötchen (G,a,Ses) dazu Salatgurke und Tomate mit Senf (Sen) und Ketchup (Menü K1) Für Rückfragen steht Ihnen unser Kundenservice gern zur Verfügung.
Diese Bestellungen sollen getriggert werden.
.... setzt sich wie folgt zusammen:
Und
.... Für Rückfragen steht Ihnen....Ist immer in allen Mails gleich. Könnte man also triggern.
-
das hier alles ist zu suchen
Montag, 27.01.2020 1x - GE Hähnchenbrustfilet mit Sauce und (03) Blumenkohl in feiner Creme (M) dazu Kartoffeln (Menü K1) Dienstag, 28.01.2020 1x - V Käsespätzle (ohne Zwiebeln) (G,a,Ei,M) Blattsalat Dressing (SO2,01,03,05) (Menü K2) Donnerstag, 30.01.2020 1x - R Burgerpattie (Sen) Burgerbrötchen (G,a,Ses) dazu Salatgurke und Tomate mit Senf (Sen) und Ketchup (Menü K1)
-
Ja, aber ich weiß nicht wie ich das umsetzen soll.
JavaScript kann ich leider nicht und blockly erscheint mir auch nicht so sinnvoll.Sollte jeder Tag wo gefunden wird als Json gespeichert werden und in Datenpunkt geschrieben werden.
-
noch eine frage . die daten hast du in einem datenpunkt - ich frage wegen der zeilenumbrüche - die sind ja im datenpunkt nicht drin
-
Ja der ganze email Text ist in einem Datenpunkt.
-
@bug77 ok einen teil hab ich schon
-
super
-
@bug77 mußte noch was anderes machen
versuche mal das script mit deinem datenpunkt (ganz oben einsetzen) - im log müßtest du was sehen - wenn der datenpunkt den selben inhalt hat, wie meiner
später kann man das in blockly einsetzen
var str =getState("controll-own.0.AAATEST.TestString1").val str=str.replace(/ viel.*zusammen:/g,""); //log("mein string : "+str) //log(str) var myWerteDate=str.match(/ {3}.+?, \d+\.\d+\.\d\d\d\d/g) var myWerteBestHelp=str.match(/\d+\.\d+\.\d\d\d\d.*?\(Menü .*?\)/g) var myWerteBest=[]; for(var i=0;i<myWerteBestHelp.length;i++){ myWerteBest.push(myWerteBestHelp[i].replace(/\d+\.\d+\.\d\d\d\d /g,"" )); } log(myWerteDate.toString()) log(myWerteBest.toString()) log("3. Bestellung: "+myWerteDate[2] + " -- "+ myWerteBest[2])
bei mir sieht das log so aus:
die 3.te bestellung ist aus einzelene segmenten zusammengesetzt - die können dann in alles mögliche verwandelt werden - html tabelle oder hson
-
wenn ich es starte bekomme ich fehlermeldungen:
Der Datenpunkt sieht so aus, doch mit zeilenumbrüchen?
-
@bug77 dann kann es nicht funktionieren - ich schau nochmal
-
@liv-in-sky said in Email auslesen und gewissen Inhalt in Datenpunkt:
die 3.te bestellung ist aus einzelene segmenten zusammengesetzt - die können dann in alles mögliche verwandelt werden - html tabelle oder hson
Kannst du die Ausgabe dann auch gleich in einen Datenpunkt z.b. "javascript.0.Email.Bestellungen" legen? Weil ich triggere dann mit history darauf und habe dann meine Tabelle für die VIS.
Weil es kommen ja jede Woche bestellungen dazu und dann wird die HTML/Json Tabelle überschrieben, ich möchte aber eine fortlaufende Liste -
@bug77 da kommt dann später -erstmal richtig filtern
-
@bug77 ich brauche bitte den genauen inhalt - oben sind leerzeiche oder eine leere zeile darin - in deinem letzten bild nicht
also den datenpunkt in eine textdatei kopieren und diese hier posten
-
ok ist gelöscht
-
@bug77 kanns tdu wieder löschen, wenn du das nicht im forum haben willst