NEWS
Emails empfangen.
-
Hallo
Babt ihr ne idee wie man aus dem subject in blockly "Alarm Einsatz 1234" nur "Alarm" auslesen kann? Da sich der Text hinter Alarm sich immer ändert, und ich möchte wenn die Email rein kommt, gucken ob Alarm im Subject ist, wenn ja dann soll er er dann ein Wert auf wahr setzten.Vielen Dank
Trino -
@Marty56 hmm da kommt bei mir nur ein [object Object], wenn ich aber die einzelnen variablen in einen State schreibe, gehts, also die Daten werden ausgelesen, aber nicht Email_Reception eingetragen.. ?
Ich brauchs nicht unbedingt, möchte aber wissen, warum das nicht geht.. :-)Hier mal mein Script, es wird unter javascript.0. ein Verzeichnis Email angelegt, wo alle Datenpunkte dann eingetragen werden ( so habe ich mehr übersicht )
var mailobj = {val: { from: "", topic: "", text: "", } }; createState("Email.Reception",mailobj); createState("Email.from_address"); createState("Email.from_name"); createState("Email.mail_subject"); createState("Email.mail_text"); schedule("*/2 * * * *", function (obj) { var MailListener = require("mail-listener2"); var mailListener = new MailListener({ username: "blabla.com", // hier Email Adresse eintragen password: "geheimespassword", // hier Passwort eintragen host: "imap.gmail.com", port: 993, // imap port tls: true, connTimeout: 10000, // Default by node-imap authTimeout: 5000, // Default by node-imap, debug: null, // Or your custom function with only one incoming argument. Default: null tlsOptions: { rejectUnauthorized: false }, mailbox: "INBOX", // mailbox to monitor searchFilter: ["UNSEEN"], // the search filter being used after an IDLE notification has been retrieved markSeen: true, // all fetched email willbe marked as seen and not fetched next time fetchUnreadOnStart: true, // use it only if you want to get all unread email on lib start. Default is `false`, mailParserOptions: {streamAttachments: true}, // options to be passed to mailParser lib. attachments: false, // download attachments as they are encountered to the project directory attachmentOptions: { directory: "attachments/" } // specify a download directory for attachments }); mailListener.start(); mailListener.on("server:connected", function(){console.log("imapconconnected");}); mailListener.on("server:disconnected", function(){console.log("imapDisconnected");}); mailListener.on("error", function(err){console.log(err);}); mailListener.on("mail", function(mail, seqno, attributes){ log(mail.from[0].address); log(mail.from[0].name); log(mail.subject); log( mail.text); var mailobj = {val: { from: mail.from[0].name, topic: mail.subject, text: mail.text } }; setState("Email.Reception", mailobj); setState("Email.from_address", mail.from[0].address); setState("Email.from_name", mail.from[0].name); setState("Email.mail_subject", mail.subject); setState("Email.mail_text", mail.text); }); mailListener.on("attachment", function(attachment){console.log(attachment.path);}); setTimeout(function(){mailListener.stop();},20000); });@ilovegym sagte in Emails empfangen.:
@Marty56 hmm da kommt bei mir nur ein [object Object], wenn ich aber die einzelnen variablen in einen State schreibe, gehts, also die Daten werden ausgelesen, aber nicht Email_Reception eingetragen.. ?
Ich brauchs nicht unbedingt, möchte aber wissen, warum das nicht geht.. :-)Hier mal mein Script, es wird unter javascript.0. ein Verzeichnis Email angelegt, wo alle Datenpunkte dann eingetragen werden ( so habe ich mehr übersicht )
var mailobj = {val: { from: "", topic: "", text: "", } }; createState("Email.Reception",mailobj); createState("Email.from_address"); createState("Email.from_name"); createState("Email.mail_subject"); createState("Email.mail_text"); schedule("*/2 * * * *", function (obj) { var MailListener = require("mail-listener2"); var mailListener = new MailListener({ username: "blabla.com", // hier Email Adresse eintragen password: "geheimespassword", // hier Passwort eintragen host: "imap.gmail.com", port: 993, // imap port tls: true, connTimeout: 10000, // Default by node-imap authTimeout: 5000, // Default by node-imap, debug: null, // Or your custom function with only one incoming argument. Default: null tlsOptions: { rejectUnauthorized: false }, mailbox: "INBOX", // mailbox to monitor searchFilter: ["UNSEEN"], // the search filter being used after an IDLE notification has been retrieved markSeen: true, // all fetched email willbe marked as seen and not fetched next time fetchUnreadOnStart: true, // use it only if you want to get all unread email on lib start. Default is `false`, mailParserOptions: {streamAttachments: true}, // options to be passed to mailParser lib. attachments: false, // download attachments as they are encountered to the project directory attachmentOptions: { directory: "attachments/" } // specify a download directory for attachments }); mailListener.start(); mailListener.on("server:connected", function(){console.log("imapconconnected");}); mailListener.on("server:disconnected", function(){console.log("imapDisconnected");}); mailListener.on("error", function(err){console.log(err);}); mailListener.on("mail", function(mail, seqno, attributes){ log(mail.from[0].address); log(mail.from[0].name); log(mail.subject); log( mail.text); var mailobj = {val: { from: mail.from[0].name, topic: mail.subject, text: mail.text } }; setState("Email.Reception", mailobj); setState("Email.from_address", mail.from[0].address); setState("Email.from_name", mail.from[0].name); setState("Email.mail_subject", mail.subject); setState("Email.mail_text", mail.text); }); mailListener.on("attachment", function(attachment){console.log(attachment.path);}); setTimeout(function(){mailListener.stop();},20000); });Moin, ist zwar schon etwas älter, aber läuft dies noch mit den aktuellen Paketen in IOBroker ?
Wenn ich dies richtig verstehe, dann muss ich folgendes installieren ?npm install mailparser --save npm install imap npm install mail-listener2Dann dort das von @ilovegym Java in Scripte mit leben füllen ?
Gruß André
-
@ilovegym sagte in Emails empfangen.:
@Marty56 hmm da kommt bei mir nur ein [object Object], wenn ich aber die einzelnen variablen in einen State schreibe, gehts, also die Daten werden ausgelesen, aber nicht Email_Reception eingetragen.. ?
Ich brauchs nicht unbedingt, möchte aber wissen, warum das nicht geht.. :-)Hier mal mein Script, es wird unter javascript.0. ein Verzeichnis Email angelegt, wo alle Datenpunkte dann eingetragen werden ( so habe ich mehr übersicht )
var mailobj = {val: { from: "", topic: "", text: "", } }; createState("Email.Reception",mailobj); createState("Email.from_address"); createState("Email.from_name"); createState("Email.mail_subject"); createState("Email.mail_text"); schedule("*/2 * * * *", function (obj) { var MailListener = require("mail-listener2"); var mailListener = new MailListener({ username: "blabla.com", // hier Email Adresse eintragen password: "geheimespassword", // hier Passwort eintragen host: "imap.gmail.com", port: 993, // imap port tls: true, connTimeout: 10000, // Default by node-imap authTimeout: 5000, // Default by node-imap, debug: null, // Or your custom function with only one incoming argument. Default: null tlsOptions: { rejectUnauthorized: false }, mailbox: "INBOX", // mailbox to monitor searchFilter: ["UNSEEN"], // the search filter being used after an IDLE notification has been retrieved markSeen: true, // all fetched email willbe marked as seen and not fetched next time fetchUnreadOnStart: true, // use it only if you want to get all unread email on lib start. Default is `false`, mailParserOptions: {streamAttachments: true}, // options to be passed to mailParser lib. attachments: false, // download attachments as they are encountered to the project directory attachmentOptions: { directory: "attachments/" } // specify a download directory for attachments }); mailListener.start(); mailListener.on("server:connected", function(){console.log("imapconconnected");}); mailListener.on("server:disconnected", function(){console.log("imapDisconnected");}); mailListener.on("error", function(err){console.log(err);}); mailListener.on("mail", function(mail, seqno, attributes){ log(mail.from[0].address); log(mail.from[0].name); log(mail.subject); log( mail.text); var mailobj = {val: { from: mail.from[0].name, topic: mail.subject, text: mail.text } }; setState("Email.Reception", mailobj); setState("Email.from_address", mail.from[0].address); setState("Email.from_name", mail.from[0].name); setState("Email.mail_subject", mail.subject); setState("Email.mail_text", mail.text); }); mailListener.on("attachment", function(attachment){console.log(attachment.path);}); setTimeout(function(){mailListener.stop();},20000); });Moin, ist zwar schon etwas älter, aber läuft dies noch mit den aktuellen Paketen in IOBroker ?
Wenn ich dies richtig verstehe, dann muss ich folgendes installieren ?npm install mailparser --save npm install imap npm install mail-listener2Dann dort das von @ilovegym Java in Scripte mit leben füllen ?
Gruß André
Hi,
du kannst die npm Pakete auch im javascript Adapter eintragen, dann werden die von iobroker direkt nach dem starten des javascript-adapters installiert und gestartet. -
Hi,
du kannst die npm Pakete auch im javascript Adapter eintragen, dann werden die von iobroker direkt nach dem starten des javascript-adapters installiert und gestartet.@ilovegym danke für die Info. Wie sollen die denn dort eingetragen werden? Läuft das denn so noch ohne Probleme?
-
@ilovegym danke für die Info. Wie sollen die denn dort eingetragen werden? Läuft das denn so noch ohne Probleme?
musste gerade selbst mal schauen.. nee.. da gibts n update Paket.. schau mal hier:

-
musste gerade selbst mal schauen.. nee.. da gibts n update Paket.. schau mal hier:

@ilovegym hast aber nur den Maillistner eingetragen. Wird dort der ganze Befehl eingegeben. Muss gleich mal schauen wenn ich zu Hause bin. Wie hast du es gelöst, bei IMAP immer verbunden zu sein? Ich sehe da die Timeout im Skript
-
musste gerade selbst mal schauen.. nee.. da gibts n update Paket.. schau mal hier:

@ilovegym sagte in Emails empfangen.:
musste gerade selbst mal schauen.. nee.. da gibts n update Paket.. schau mal hier:

So hab einmal geschaut. Kann es sein, dass du nur die Pakete mit Java zusammen startest? Nach meiner Eintragung und Neustart von Java ist dort dann nichts passiert. Keine Installation etc.
-
@ilovegym sagte in Emails empfangen.:
musste gerade selbst mal schauen.. nee.. da gibts n update Paket.. schau mal hier:

So hab einmal geschaut. Kann es sein, dass du nur die Pakete mit Java zusammen startest? Nach meiner Eintragung und Neustart von Java ist dort dann nichts passiert. Keine Installation etc.
@gelberlemmy normalerweise installiert der javascript-adapter die Pakete beim Neustart des Adapters.
-
@bahnuhr
Danke :) Wenn man sich etwas einarbeitet, versteht man, was du gemacht hast :) Wollte es ohne VPN lösen, aber das scheint nicht zu gehen (außer Ports zu öffnen).du kannst ganz ohne vpn und mit tasker einen oder mehrere datenpunkt in iobroker schreiben
-
@gelberlemmy normalerweise installiert der javascript-adapter die Pakete beim Neustart des Adapters.
@ilovegym sagte in Emails empfangen.:
@gelberlemmy normalerweise installiert der javascript-adapter die Pakete beim Neustart des Adapters.
Moin, hab den Adapter auch neu gestartet. Ich habe einfach den Namen wie folgt "mail-listener2" des Paketes eingetragen. Aber im LOG war nichts zu sehen. Auch kein Start des Adapters.
Werde diesen einfach einmal händisch installieren und dann dort eintragen, damit dieser dann auf jedenfall mit gestartet wird. Vielleicht klappt das ja.
-
@ilovegym sagte in Emails empfangen.:
@gelberlemmy normalerweise installiert der javascript-adapter die Pakete beim Neustart des Adapters.
Moin, hab den Adapter auch neu gestartet. Ich habe einfach den Namen wie folgt "mail-listener2" des Paketes eingetragen. Aber im LOG war nichts zu sehen. Auch kein Start des Adapters.
Werde diesen einfach einmal händisch installieren und dann dort eintragen, damit dieser dann auf jedenfall mit gestartet wird. Vielleicht klappt das ja.
@gelberlemmy vielleicht gibts das paket auf npm nicht mehr? Hab da schon lange nichts mehr an der Installation gemacht..
Schau einfach mal, was da jetzt aktuell ist.. -
@gelberlemmy normalerweise installiert der javascript-adapter die Pakete beim Neustart des Adapters.
@ilovegym sagte in Emails empfangen.:
@gelberlemmy normalerweise installiert der javascript-adapter die Pakete beim Neustart des Adapters.
Ich habe das jetzt mal über Putty angeschoben und sieht wie folgt aus. Am Ende gibt eine Warnung. Ist diese normal ?
pi@raspberrypi:~ $ npm install imap [..................] - rollbackFailedOptional: verb npm-session 6f2886487ff7552 [..................] - rollbackFailedOptional: verb npm-session 6f2886487ff7552 [..................] - rollbackFailedOptional: verb npm-session 6f2886487ff7552 [..................] - rollbackFailedOptional: verb npm-session 6f2886487ff7552 [..................] - rollbackFailedOptional: verb npm-session 6f2886487ff7552 [..................] - rollbackFailedOptional: verb npm-session 6f2886487ff7552 [..................] \ rollbackFailedOptional: verb npm-session 6f2886487ff7552 [..................] \ rollbackFailedOptional: verb npm-session 6f2886487ff7552 [..................] \ rollbackFailedOptional: verb npm-session 6f2886487ff7552 [..................] / fetchMetadata: sill resolveWithNewModule imap@0.8.19 che [..................] - fetchMetadata: sill resolveWithNewModule imap@0.8.19 che [..................] - fetchMetadata: sill resolveWithNewModule imap@0.8.19 che [..................] / fetchMetadata: sill resolveWithNewModule imap@0.8.19 che [..................] - fetchMetadata: sill resolveWithNewModule imap@0.8.19 che [..................] \ fetchMetadata: sill resolveWithNewModule imap@0.8.19 che [..................] / fetchMetadata: sill resolveWithNewModule readable-stream [..................] | fetchMetadata: sill resolveWithNewModule readable-stream [..................] \ fetchMetadata: sill resolveWithNewModule readable-stream [..................] \ fetchMetadata: sill resolveWithNewModule readable-stream [ ................] - fetchMetadata: sill resolveWithNewModule string_decoder@ [ ............] - diffTrees: sill install generateActionsToTake [ ...........] | postinstall: sill install executeActions [ ...........] - extract:imap: verb lock using /home/pi/.npm/_locks/stagi [ ...........] - extract:imap: verb lock using /home/pi/.npm/_locks/stagi [ ...........] / extract:imap: verb lock using /home/pi/.npm/_locks/stagi [ ......] | finalize:imap: sill doSerial finalize 64 [ ......] / refresh-package-json:imap: timing action:finalize Comple [ ......] | refresh-package-json:imap: timing action:finalize Comple [ ......] \ postinstall: info lifecycle imap@0.8.19~postinstall: ima npm WARN saveError ENOENT: no such file or directory, open '/home/pi/package.json' npm notice created a lockfile as package-lock.json. You should commit this file. npm WARN enoent ENOENT: no such file or directory, open '/home/pi/package.json' npm WARN pi No description npm WARN pi No repository field. npm WARN pi No README data npm WARN pi No license field. + imap@0.8.19 added 8 packages from 4 contributors and audited 8 packages in 1.604s found 0 vulnerabilities [ ......] \ postinstall: sill install printInstalled -
@Marty56 hmm da kommt bei mir nur ein [object Object], wenn ich aber die einzelnen variablen in einen State schreibe, gehts, also die Daten werden ausgelesen, aber nicht Email_Reception eingetragen.. ?
Ich brauchs nicht unbedingt, möchte aber wissen, warum das nicht geht.. :-)Hier mal mein Script, es wird unter javascript.0. ein Verzeichnis Email angelegt, wo alle Datenpunkte dann eingetragen werden ( so habe ich mehr übersicht )
var mailobj = {val: { from: "", topic: "", text: "", } }; createState("Email.Reception",mailobj); createState("Email.from_address"); createState("Email.from_name"); createState("Email.mail_subject"); createState("Email.mail_text"); schedule("*/2 * * * *", function (obj) { var MailListener = require("mail-listener2"); var mailListener = new MailListener({ username: "blabla.com", // hier Email Adresse eintragen password: "geheimespassword", // hier Passwort eintragen host: "imap.gmail.com", port: 993, // imap port tls: true, connTimeout: 10000, // Default by node-imap authTimeout: 5000, // Default by node-imap, debug: null, // Or your custom function with only one incoming argument. Default: null tlsOptions: { rejectUnauthorized: false }, mailbox: "INBOX", // mailbox to monitor searchFilter: ["UNSEEN"], // the search filter being used after an IDLE notification has been retrieved markSeen: true, // all fetched email willbe marked as seen and not fetched next time fetchUnreadOnStart: true, // use it only if you want to get all unread email on lib start. Default is `false`, mailParserOptions: {streamAttachments: true}, // options to be passed to mailParser lib. attachments: false, // download attachments as they are encountered to the project directory attachmentOptions: { directory: "attachments/" } // specify a download directory for attachments }); mailListener.start(); mailListener.on("server:connected", function(){console.log("imapconconnected");}); mailListener.on("server:disconnected", function(){console.log("imapDisconnected");}); mailListener.on("error", function(err){console.log(err);}); mailListener.on("mail", function(mail, seqno, attributes){ log(mail.from[0].address); log(mail.from[0].name); log(mail.subject); log( mail.text); var mailobj = {val: { from: mail.from[0].name, topic: mail.subject, text: mail.text } }; setState("Email.Reception", mailobj); setState("Email.from_address", mail.from[0].address); setState("Email.from_name", mail.from[0].name); setState("Email.mail_subject", mail.subject); setState("Email.mail_text", mail.text); }); mailListener.on("attachment", function(attachment){console.log(attachment.path);}); setTimeout(function(){mailListener.stop();},20000); });würde gerne die mails mit dem status nicht gelesen belassen - habe dazu markseen_= false; geändert
die mails werden trotzdem als gelesen markiert - ist das bei dir auch so ?
-
@ilovegym
hat sich erledigt - habe mal eine andere mailbox eingetragen - jetzt funktioniert es -
@ilovegym sagte in Emails empfangen.:
@gelberlemmy normalerweise installiert der javascript-adapter die Pakete beim Neustart des Adapters.
Ich habe das jetzt mal über Putty angeschoben und sieht wie folgt aus. Am Ende gibt eine Warnung. Ist diese normal ?
pi@raspberrypi:~ $ npm install imap [..................] - rollbackFailedOptional: verb npm-session 6f2886487ff7552 [..................] - rollbackFailedOptional: verb npm-session 6f2886487ff7552 [..................] - rollbackFailedOptional: verb npm-session 6f2886487ff7552 [..................] - rollbackFailedOptional: verb npm-session 6f2886487ff7552 [..................] - rollbackFailedOptional: verb npm-session 6f2886487ff7552 [..................] - rollbackFailedOptional: verb npm-session 6f2886487ff7552 [..................] \ rollbackFailedOptional: verb npm-session 6f2886487ff7552 [..................] \ rollbackFailedOptional: verb npm-session 6f2886487ff7552 [..................] \ rollbackFailedOptional: verb npm-session 6f2886487ff7552 [..................] / fetchMetadata: sill resolveWithNewModule imap@0.8.19 che [..................] - fetchMetadata: sill resolveWithNewModule imap@0.8.19 che [..................] - fetchMetadata: sill resolveWithNewModule imap@0.8.19 che [..................] / fetchMetadata: sill resolveWithNewModule imap@0.8.19 che [..................] - fetchMetadata: sill resolveWithNewModule imap@0.8.19 che [..................] \ fetchMetadata: sill resolveWithNewModule imap@0.8.19 che [..................] / fetchMetadata: sill resolveWithNewModule readable-stream [..................] | fetchMetadata: sill resolveWithNewModule readable-stream [..................] \ fetchMetadata: sill resolveWithNewModule readable-stream [..................] \ fetchMetadata: sill resolveWithNewModule readable-stream [ ................] - fetchMetadata: sill resolveWithNewModule string_decoder@ [ ............] - diffTrees: sill install generateActionsToTake [ ...........] | postinstall: sill install executeActions [ ...........] - extract:imap: verb lock using /home/pi/.npm/_locks/stagi [ ...........] - extract:imap: verb lock using /home/pi/.npm/_locks/stagi [ ...........] / extract:imap: verb lock using /home/pi/.npm/_locks/stagi [ ......] | finalize:imap: sill doSerial finalize 64 [ ......] / refresh-package-json:imap: timing action:finalize Comple [ ......] | refresh-package-json:imap: timing action:finalize Comple [ ......] \ postinstall: info lifecycle imap@0.8.19~postinstall: ima npm WARN saveError ENOENT: no such file or directory, open '/home/pi/package.json' npm notice created a lockfile as package-lock.json. You should commit this file. npm WARN enoent ENOENT: no such file or directory, open '/home/pi/package.json' npm WARN pi No description npm WARN pi No repository field. npm WARN pi No README data npm WARN pi No license field. + imap@0.8.19 added 8 packages from 4 contributors and audited 8 packages in 1.604s found 0 vulnerabilities [ ......] \ postinstall: sill install printInstalled@gelberlemmy hast nicht im richtigen Verzeichnis installiert, würde ich sagen..
-
würde gerne die mails mit dem status nicht gelesen belassen - habe dazu markseen_= false; geändert
die mails werden trotzdem als gelesen markiert - ist das bei dir auch so ?
@liv-in-sky ja, kann an der Mailbox liegen, hatte das ab und zu mal, störte mich aber weniger..
-
@liv-in-sky ja, kann an der Mailbox liegen, hatte das ab und zu mal, störte mich aber weniger..
ist auch ein anderer provider - vielleicht liegt es daran ?
-
@gelberlemmy hast nicht im richtigen Verzeichnis installiert, würde ich sagen..
@ilovegym lustigerweise funktioniert das jetzt. Bekomme die eMails in meinen Datenpunkten. Wo hätte ich das denn installieren sollen ? Hab dies ohne Verzeichnisangabe installiert....
-
@liv-in-sky ja, kann an der Mailbox liegen, hatte das ab und zu mal, störte mich aber weniger..
habe dein script noch ein wenig aufgebohrt - ne tabelle - was sonst :-)

bis jetzt kann man sortieren
- wieviele mails angezeigt werden sollen
- welche sender abgefragt werden sollen
-
@ilovegym lustigerweise funktioniert das jetzt. Bekomme die eMails in meinen Datenpunkten. Wo hätte ich das denn installieren sollen ? Hab dies ohne Verzeichnisangabe installiert....
@gelberlemmy normal installiert iobroker die npm pakete im ordner /opt/iobroker/node_modules, im direkten iobroker ordner gehts auch, solange die files gefunden werden und die rechte stimmen.
Ist besser wegen benutzerrechten und pfadangaben.. solange es jetzt läuft, lass es so.
Daher auch der Hinweis, einfach im Javascript-Adapter das Paket zu hinterlegen, wie die anderen auch dort.
Bei einem Neustart des Adapters werden die fehlenden Pakete installiert.