NEWS
Emails empfangen.
-
wenn du das script importierst,
- mußt du noch den datenpunkt für die mailanzahl definieren
- deinen usernamen im request blockly eingeben
- und definieren, was der anruf sagen soll
-
Hallo Forum,
das Script hier ist genau das, was ich gesucht habe! Leider komme ich nicht mehr weiter und benötige Hilfe:
Ich habe in der Instanz des Javascript-Adapters die folgenden npm-Pakete eingetragen:
Und dann ein Script angelegt, wie es hier im Thread zu finden ist: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: "meine Mailadresse", password: "mein Passwort", host: "mein Host", port: 993, // imap port tls: true, connTimeout: 10000, // Default by node-imap authTimeout: 5000, // Default by node-imap, debug: console.log, // Or your custom function with only one incoming argument. Default: null tlsOptions: { rejectUnauthorized: false }, mailbox: "INBOX", // mailbox to monitor searchFilter: ["UNSEEN", "FLAGGED"], // the search filter being used after an IDLE notification has been retrieved markSeen: false, // 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: false}, // 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(); // start listening 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); console.log('Mailabsender: '+mail.from[0].address); console.log('Absendername: '+mail.from[0].name); console.log('Betreff: '+mail.subject); 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); });
Das Script scheint grundsätzlich zu funktionieren, denn im Log-File erhalte ich die entsprechenden Meldungen:
Allerdings werden weder die console.log-Anweisungen in der obigen Funktion: mailListener.on("mail", function(mail, seqn, attributes){... ausgegeben, noch die Datenpunkte mit Werten befüllt - was natürlich logisch ist, wenn die Funktion nicht ausgeführt wird.
Ein Neustart von Adapter und Iobroker bringt leider nichts.
Könnte es evtl. mit der folgenden Meldung zusammen hängen:
Was ist zu tun?Danke Euch vorab!
-
So, wie es häufig zugeht: Wenn man jemand um Hilfe bittet, findet man das Problem oft doch selbst. Für alle die das gleiche Problem haben sollten:
Es scheint wohl mit dem Mailserver zusammenzuhängen. Nachdem ich im Script unter searchFilter "Flagged" entfernt habe, funktioniert es nun:
searchFilter: ["UNSEEN"], // the search filter being used after an IDLE notification has been retrieved
-
Hallo,
ich konnte das Script erfolgreich installieren. Leider funktioniert die Option nicht, dass eingelesene Emails nicht als gelesen markiert werden.
markSeen: false, // all fetched email will be marked as seen and not fetched next time
Dennoch werden die Emails im Postfach durch das Script als gelesen markiert. Woran könnte das liegen?
Bei dem Postfach handelt es sich um ein Apple iCloud Postfach. -
Ich habe einen Fehler im Log:
script.js.common.Automatisierung.ioBroker.Mail_listener: <= 'A1 NO [AUTHENTICATIONFAILED] Invalid credentials (Failure)'
Das Problem ist aber die Logindaten stimmen zu 100%
hat jemand eine Idee?
-
Tja, was soll ich sagen. Es liegt an Gmail. Es ist nicht möglich dieses Skript mit Gmail zu nutzen. Ein anderer Anbieter und es funktioniert auf Anhieb...
Danke trotzdem für die Hilfe.
-
ich bin mitttlerweile auf nodered umgestiegen, um emails zu lesen - mail-listener funktioniert bei mir auch nicht mehr richtig
-
@dragon Man kann auch mit Google gmail das Script nutzen. Man muss dann nur ein sogenanntes APP-Passwort nutzen. Mit dem normalen Google-Passwort klappt es nicht, da dort 2-Faktoren-Authentifizierung genutzt wird.
-
@liv-in-sky Gibt es da Infos oder eine Anleitung, wie ich sowas mit Nodered umsetzte, Mails zu lesen. Ich würde hier ganz gern auf Mails von Teams Accounts hören, damit ich dann in der VIS angezeigt bekomme, das Lehrer geschrieben haben. Bei mehr als einem Kind wirds schon schwierig, ich will ja nicht ständig die Accounts switchen um zu sehen ob jemand was geschrieben hat.
-
habe das vor kurzem gemacht: https://forum.iobroker.net/post/859755
evtl kannst du das mal importieren (in nodered) und für dich angleichen - ich lese nur bestimmte absender aus und brauche die subjects der mails - welche dann in einem json landen und in ener tabelle in der vis angezeigt werden
-
@mcu Danke für die Info. mal schauen ob ich dazu was finde...
-
-
@mcu super! vielen dank!
-
Kann mir jemand damit weiterhelfen???
EMails werden zwar abgerufen und im Datenpunkt angezeigt, aber es kommt zu diesem Error.
Habe versucht die NPM Module direkt zu installieren oder über die Java Instanz. Bei beiden Varianten ist es das gleiche Problem.host.iobroker 2022-10-22 10:40:34.202 error instance system.adapter.javascript.0 terminated with code 1 (JS_CONTROLLER_STOPPED) host.iobroker 2022-10-22 10:40:34.202 error Caught by controller[1]: at processImmediate (node:internal/timers:466:21) host.iobroker 2022-10-22 10:40:34.202 error Caught by controller[1]: at MailParser._process (/opt/iobroker/node_modules/iobroker.javascript/node_modules/mailparser/lib/mailparser.js:227:22) host.iobroker 2022-10-22 10:40:34.202 error Caught by controller[1]: at MailParser._processStateHeader (/opt/iobroker/node_modules/iobroker.javascript/node_modules/mailparser/lib/mailparser.js:309:61) host.iobroker 2022-10-22 10:40:34.201 error Caught by controller[1]: at MailParser._generateFileName (/opt/iobroker/node_modules/iobroker.javascript/node_modules/mailparser/lib/mailparser.js:1407:27) host.iobroker 2022-10-22 10:40:34.201 error Caught by controller[1]: TypeError: mime.extension is not a function javascript.0 2022-10-22 10:40:34.124 error TypeError: mime.extension is not a function at MailParser._generateFileName (/opt/iobroker/node_modules/iobroker.javascript/node_modules/mailparser/lib/mailparser.js:1407:27) at MailParser._processStateHeader (/opt/iobroker/node_modules/iobroker.javascript/node_modules/mailparser/lib/mailparser.js:309:61) at MailParser._process (/opt/iobroker/node_modules/iobroker.javascript/node_modules/mailparser/lib/mailparser.js:227:22) at processImmediate (node:internal/timers:466:21) javascript.0 2022-10-22 10:40:34.124 error Error: mime.extension is not a function javascript.0 2022-10-22 10:40:34.124 error An error happened which is most likely from one of your scripts, but the originating script could not be detected.
-
@masl sagte in Emails empfangen.:
Kann mir jemand damit weiterhelfen???
hier stehen auch Lösungen dazu drin :
https://forum.iobroker.net/topic/55923/javascript-instanz-wird-von-maillistener-getötet?
-
Es hat tatsächlich nun doch funktioniert. Hab mich nochmal ein wenig durchgelesen.
-
@masl said in Emails empfangen.:
Es hat tatsächlich nun doch funktioniert. Hab mich nochmal ein wenig durchgelesen.
Hab leider doch nicht hinbekommen. Es kommt zu Fehlermeldungen. Wenn jemand noch eine andere Idee hätte wie man das Postfach überwachen kann, dann gerne melden
-
-
edit: Hat sich irgendwie von selbst gefixt.
-
Hallo zusammen, besteht die Interesse an einen Adapter und was müsste dieser alles können? Habe bereits angefangen und bei Bedarf würde ich diesen zur Verfügung stellen.
Gruß//Lucky