NEWS
E Mails in Vis anzeigen
-
Hallo zusammen
Ich möchte gern eine Mailanzeige in meine Vis einbauen. Diese Anzeige sollte mir abends wenn ich nach Hause komme ,eine Übersicht der angekommenen Mails zeigen. Das ganze aber ohne die Mails vom Server zu holen. Die Mails sollen dort als ungelesen verbleiben. Als Anzeige würde mir der Betreff und der Absender reichen.
Das Ganze bräuchte ich für 2 Mailadressen. Wichtig wäre vielleicht noch das alle Mails dargestellt werden, nicht nur die letzte.
So ungefähr sollte es aussehen. Das ist aus einem anderen Projekt,was ich gern einstellen würde.
Blau und rot sind die beiden unterschiedlichen Mailadressen die angezeigt werden.Ich habe vor Jahren es schon mal mit Node-Red versucht und aktuell mit mail-listener2 aber bei beiden Möglichkeiten werden die Mails vom Server geholt und es ist immer nur die letzte Mail darstellbar.
Was gibt es für Möglichkeiten ??
Ich hoffe auf gute Ideen von Euch!!Volker
-
Hallo zusammen
hat den keiner eine gute Idee?
Ich bin mitlerweile wieder auf dem Stand vor 2 Jahren mit dem Node Red Adapter.
Dort funktioniert die Ansicht wenigstens und es es sind alle Mails da ,allerdings ohne Absender. Kann man den Absender noch irgendwo mit rein nehmen,den Mail Inhalt brauche ich nicht.
Eigentlich wie ein Posteingang von der MailAPP.
Wie bekomme ich jetzt diese Anzeigein meine VIS. Ich habe es schon mit dem Message Adapter versucht, aber der zeigt nur einen Bildschirmausschnitt an.
Wie kann ich das lösen das die Mails untereinander angezeigt werden,wenn möglich noch mit Absender??
Bitte um Hilfe
Volker -
Hallo zusammen
hat den keiner eine Idee??
Ich komme allein nicht weiter,bitte um Hilfe!!!
Volker -
@knusterus @knusterus :
Hallo Volker,ich weiß, der Thread ist schon alt, aber leider wird der immer noch bei Google relativ weit oben angezeigt, wenn man nach "ioBroker Visualisierung Emails anzeigen" sucht, daher hier meine Antwort.
In folgendem Thema hattest du ja auch schon gepostet:
https://forum.iobroker.net/topic/18501/emails-empfangenIch habe das Skript dort adaptiert und lasse mir die Emails in Jarvis anzeigen (müsste für VIS aber ähnlich funktionieren):
// Quelle Original: https://github.com/chirag04/mail-listener2 // Quelle Forum: https://forum.iobroker.net/topic/18501/emails-empfangen createState("IMAP.Email_Eingang"); createState("IMAP.EmailText"); createState("IMAP.Status"); createState("IMAP.EmailsJSON"); createState("IMAP.Emails"); var MailListener = require("mail-listener2"); var mailListener = new MailListener({ username: "siemens", // hier Email Adresse eintragen password: "verysecretVeryLong!1eins", // hier Passwort eintragen host: "192.168.1.10", //Mailserver 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: 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 }); const aMailAll = []; mailListener.start(); mailListener.on("server:connected", function(){console.warn("------- imapConnected");}); // IMAP-Status als Logausgabe und in Datenpunkt mailListener.on("server:connected", function(){setState("IMAP.Status",1);}); mailListener.on("server:disconnected", function(){console.error("------- imapDisconnected");}); mailListener.on("server:disconnected", function(){setState("IMAP.Status",0);}); // mailListener.on("error", function(err){console.error(err);}); // geändert auf Error im Log, mailListener.on("mail", function(mail, seqno, attributes){ /* log("Absendeadresse: " + mail.from[0].address); log("Absendername: " + mail.from[0].name); log("Betreff: " + mail.subject); log("Inhalt: " + mail.text); */ if (aMailAll.length > 25) { aMailAll.shift(); } let aMailsingle = { "Datum" : new Date().toLocaleString(), "Betreff" : mail.subject } ; /* aMailSingle[0] = {}; aMailSingle[0].Datum = mail.date; aMailSingle[0].Betreff = mail.subject; */ aMailAll.push(aMailsingle); setState("IMAP.Email_Eingang",mail.from[0].address); setState("IMAP.EmailText",mail.text); //log(aMailSingle); setState("IMAP.Emails",aMailAll); setState("IMAP.EmailsJSON", JSON.stringify(aMailAll)); }); // mailListener.on("attachment", function(attachment){console.log(attachment.path);});
Ich lege mir ein Array mit Objekten an, in denen der Timestamp und der Betreff hineingeschrieben wird, das könntest du nach belieben erweitern. Im IMAP.EmailsJSON findest du dann die Einträge.
Über den Filter searchFilter: [""] kannst du dir definieren, was du abfragen möchtest;
Ich nutze das, um Status- und Fehlerinformationen meiner SPS im Pferdestall darzustellen, die SPS sendet E-Mails an einen lokalen E-Mailserver und der ioBroker greift über das Skript auf diesen zu.Vielleicht hilft das dir ja noch, wenn nicht hoffentlich den Menschen, die (wie ich) über google hier gelandet sind.
Viele Grüße!