NEWS
Test Adapter ioBroker.imap latest/stable
-
-
@bahnuhr Das sollte funktionieren.
// Datei vom Anrufbeantworter speichern und per telegram senden function weiter() { // Variablen var i, result, j, json, fs = require('fs'), vText = "", vUser = "Dieter"; var uid = getState("imap.0.ppc_dbrp-mueller_de.email.email_01.uid").val; var subject = getState("imap.0.ppc_dbrp-mueller_de.email.email_01.subject").val; var text = getState("imap.0.ppc_dbrp-mueller_de.email.email_01.text").val; // Script if (text.indexOf("Anrufbeantworter") > - 1) { // Anrufbeantworter ist im Text enthalten // Variablen var Anruf_von = text.substring(text.indexOf("Der Anrufer:") + 13, text.indexOf("hat für Sie") - 1) var Datum = text.substring(text.indexOf("Datum:") + 7, text.indexOf("Uhrzeit") - 1) var Uhrzeit = text.substring(text.indexOf("Uhrzeit:") + 9, text.indexOf("Aufnahme") - 1) var Laenge = text.substring(text.indexOf("Aufnahme") + 15, text.indexOf("Die Weiter") - 2) + " (min/sek)" // Datei speichern sendTo("imap.0", "getIMAPRequest", { name: "ppc@dbrp-mueller.de", max: 20, search: '["ALL"]', fetch: JSON.parse('{"fetch": true, "uid": [' + uid + ']}'), bodie: '{bodies: "", markSeen: false}', parse: true, }, async function (result) { if (!result) { log("No result found!"); return; } for (var i_index in result) { i = result[i_index]; var j_list = getAttr(i, 'body.attachments'); for (var j_index in j_list) { j = j_list[j_index]; json = Buffer.from(getAttr(j, 'content'));; //log(getAttr(j, 'filename')); writeFile('vis.0', '/Anrufe/'+ getAttr(j,'filename'), json, function (error) { if(error) { log('Fehler beim Speichern von Datei ' + getAttr(json, 'filename') +' Fehler:' + error, 'warn'); } else { log('Datei: ' + getAttr(j, 'filename') +' wurde gespeichert'); } }); // Datei kopieren mit anderem Filenamen setTimeout(function() { Datei_kopieren("/opt/iobroker/iobroker-data/files/vis.0/Anrufe/" + getAttr(j, 'filename'), "/opt/iobroker/iobroker-data/files/vis.0/Anrufe/Anrufbeantworter.wav"); }, 3000); // Datei wieder löschen setTimeout(function() { fs.unlink("/opt/iobroker/iobroker-data/files/vis.0/Anrufe/" + getAttr(j, 'filename'), function (err) { if (err) throw err; log('Datei: ' + getAttr(j, 'filename') + ' wurde gelöscht.'); }); fs.unlink("/opt/iobroker/iobroker-data/files/vis.0/Anrufe/Anrufbeantworter.wav", function (err) { if (err) throw err; log('Datei: Anrufbeantworter.wav wurde gelöscht.'); }); }, 10000); // Datei per telegram versenden setTimeout(function() { vText = "Anruf von: " + Anruf_von + "\nDatum: " + Datum + "\nUhrzeit: " + Uhrzeit + "\nAufnahme: " + Laenge; log (vText); //vText = "test"; sendTo('telegram.0', {user: vUser, text: '/opt/iobroker/iobroker-data/files/vis.0/Anrufe/Anrufbeantworter.wav', caption: vText}); }, 5000); } } }); } else { log ("Anrufbeantworter ist im Text nicht enthalten; Script wird abgebrochen."); } } on({id: "imap.0.ppc_dbrp-mueller_de.email.email_01.uid", change: "ne"}, function(obj) { // uid von Email 1 hat sich geändert log("Auslöser Email imap hat sich geändert; UID= " + obj.state.val); weiter(); }); weiter();
-
@lucky_esa
Danke, aber es klappt nicht.Am PC kommt im wmp dies:
Edit:
Gabs da nicht einmal einen Hinweis von @apollon77 dass das speichern mit buffer nicht mehr geht. Kann aber auch ein anderer Sachverhalt gewesen sein. Hatten wir aber schon einmal hier in diesem thread.
dieses hier:
https://forum.iobroker.net/topic/63400/test-adapter-iobroker-imap-v0-1-1-latest-stable/234?page=12 -
@bahnuhr Dann stimmt was mit deiner Funktion Datei_kopieren nicht. Habe es getestet und es funktioniert. Hier noch an den 2 Stellen die richtige uid eintragen.
Nimm mal nur diesen Code.
//var fs = require('fs'); var i, result, j, json; sendTo("imap.0", "getIMAPRequest", { name: "github@luckyskills.de", max: 20, search: '["ALL", ["HEADER", "FROM", "xxx@xxx.de"]]', fetch: JSON.parse('{"fetch": true, "uid": [107]}'), bodie: '{bodies: "", markSeen: false}', parse: true, }, async function (result) { if (!result) { console.log("No result found!"); return; } for (var i_index in result) { i = result[i_index]; var j_list = getAttr(i, 'body.attachments'); for (var j_index in j_list) { j = j_list[j_index]; var test = getAttr(i, 'attrs.uid'); console.log(test); if (test == 107) { json = Buffer.from(getAttr(j, 'content')); // Dein Anhang als Buffer //console.log(JSON.stringify(json)); //console.log(getAttr(json, 'data')); console.log(getAttr(j, 'filename')); //fs.writeFile('/opt/iobroker/temp/' + getAttr(j, 'filename'), json, 'binary', function(err) { // if (err) { // console.log('Fehler beim Bild speichern: ' + err, 'warn'); // } else { // console.log('Fehler beim Bild speichern: ', 'warn'); // } //}); writeFile('vis.0', getAttr(j, 'filename'), json, function (error) { if(error) { console.log('Fehler beim Speichern von Datei ' + getAttr(json, 'filename') +' Fehler:' + error, 'warn'); } else { console. log('Datei ' + getAttr(j, 'filename') +' wurde gespeichert'); } }); } } } });
-
So, ich geb auf.
Habe das Script genommen.
Dann mir selber eine Mail gesendet (mit Anhang wav Datei die ich dir gesendet habe)uid im script geändert
Script gestartet
in vis.0 wird Datei "winmail.dat" erzeugt (keine wav oder so ?!)
Dann die Datei kopiert auf win pc
Abspielen geht nicht.Wenn du magst gerne auch mal per anydesk.
Ansonsten geb ich jetzt auf.
Bei mir läuft es nicht.
Warum auch eine dat erzeugt wird und keine wav weiß ich auch nicht. -
-
in vis.0 wird Datei "winmail.dat" erzeugt (keine wav oder so ?!)
Was hast du denn als Anhang in deiner Mail. Bei welchem Provider bist du?
Ich benötige mal die komplette Ausgabe von:for (var i_index in result) { i = result[i_index]; console.log(JSON.stringify(i)); // Das einfügen var j_list = getAttr(i, 'body.attachments');
Achtung! Dein logfile kann dann sofort auf > 20MB anwachsen.
-
@lucky_esa sagte in Test Adapter ioBroker.imap v0.1.1 latest/stable:
Was hast du denn als Anhang in deiner Mail.
Den Anhang den ich dir gesendet habe (...wav)
@lucky_esa sagte in Test Adapter ioBroker.imap v0.1.1 latest/stable:
Bei welchem Provider bist du?
Strato
console.log(JSON.stringify(i)); // Das einfügen
Eingefügt, aber sehr groß war der log nicht !
log kommt per Mail.
-
@bahnuhr
So kommt der Anhang von deinem Server:"contentType":"application/ms-tnef","partId":"2","release":null,"contentDisposition":"attachment","filename":"winmail.dat"
Und so bei mir:
"contentType":"audio/wav","partId":"2","release":null,"contentDisposition":"attachment","filename":"02.07.23_09.07_Anruf.01764.wav"
Was siehst du denn in der eMail?
Gruß//Lucky
-
@thomas-braun
Habe durch deinen Link winmail.dat deaktiviert.Vorgehensweise:
Durch das Script wird sie aber immer noch erzeugt.
Äußerst komisch das ganze. -
@lucky_esa sagte in Test Adapter ioBroker.imap v0.1.1 latest/stable:
Was siehst du denn in der eMail?
Da ist ganz normal die wav drin.
Von einer winmail.dat sieht man nix.
-
@lucky_esa
Kann es sein, dass es 2 Anhänge gibt.Einmal die wav, und weiterhin die dat.
Und dein Script greift halt die dat zuerst ab.möglich ?
-
@bahnuhr mach mal die eMail unkenntlich, sonst werde ich Dich stalken
-
@djmarc75 sagte in Test Adapter ioBroker.imap v0.1.1 latest/stable:
@bahnuhr mach mal die eMail unkenntlich, sonst werde ich Dich stalken
hab ich gemacht.
Aber bei so vielen Scrrenshots ist die doch noch irgendwo sichtbar -
@bahnuhr sagte in Test Adapter ioBroker.imap v0.1.1 latest/stable:
@lucky_esa
Kann es sein, dass es 2 Anhänge gibt.Einmal die wav, und weiterhin die dat.
Und dein Script greift halt die dat zuerst ab.möglich ?
Das wäre möglich. Aber es ist ka eine Schleife und daher sollten alle Dateien gespeichert werden.
Log das malconsole.log(JSON.stringify(result)); // Das mal hinzufügen for (var i_index in result) { i = result[i_index]; //console.log(JSON.stringify(i)); var j_list = getAttr(i, 'body.attachments'); for (var j_index in j_list) {
-
@bahnuhr sagte in Test Adapter ioBroker.imap v0.1.1 latest/stable:
@djmarc75 sagte in Test Adapter ioBroker.imap v0.1.1 latest/stable:
@bahnuhr mach mal die eMail unkenntlich, sonst werde ich Dich stalken
hab ich gemacht.
Aber bei so vielen Scrrenshots ist die doch noch irgendwo sichtbarDeine eMail ist in allen Codeschnipsel enthalten
-
@lucky_esa sagte in Test Adapter ioBroker.imap v0.1.1 latest/stable:
Deine eMail ist in allen Codeschnipsel enthalten
Ich geh mal auf die Suche.
Und ich glaube ich habe es nun.
Habe ja diesen Anhang ...dat deaktiviert.
Und nun mal eine ganz neue Mail an mich selber versendet.Und ja, das Script nimmt nun die wav.
Ich beobachte das mal weiter.
Danke an @Thomas-Braun für den Tipp.
Und primär Dank an @Lucky_ESA für deine Geduld.Wie gesagt, ich beobachte dies mal die Tage und werde berichten.
mfg
Dieter -
@bahnuhr Freut mich aber leider hast du noch ein Fehler in deinem Script. Du darfst die Datei nicht mit fs. löschen. Schau mal oben, da hatte ich dir das löschen gepostet.
writeFile('vis.0', getAttr(j, 'filename'), json, function (error) { if (error) { console.log('Fehler beim Speichern von Datei ' + getAttr(json, 'filename') + ' Fehler:' + error, 'warn'); } else { console.log('Datei ' + getAttr(j, 'filename') + ' wurde gespeichert'); // Hier an Telegram senden delFile('vis.0', getAttr(j, 'filename'), function (error) { if (!error) console.log('Datei ' + getAttr(j, 'filename') + ' gelöscht'); }); } });
Gruß//Lucky
-
@lucky_esa sagte in Test Adapter ioBroker.imap v0.1.1 latest/stable:
delFile('vis.0'
Kannst du mir sagen, was da der Unterschied ist zu fs.unlink
fs.unlink funktioniert.
-
@bahnuhr sagte in Test Adapter ioBroker.imap v0.1.1 latest/stable:
@lucky_esa sagte in Test Adapter ioBroker.imap v0.1.1 latest/stable:
delFile('vis.0'
Kannst du mir sagen, was da der Unterschied ist zu fs.unlink
fs.unlink funktioniert.
Mit writeFile wird die Datei in die iobroker db geschrieben und mit delFile wird diese dort auch wieder entfernt. Du kannst die Dateien dann in VIS sehen und auch dort löschen.