Skip to content

Latest commit

 

History

History
477 lines (407 loc) · 14.5 KB

EXAMPLE.md

File metadata and controls

477 lines (407 loc) · 14.5 KB

Logo

ioBroker.imap

Zurück zur Beschreibung

Alle Mails

["ALL"]

Alle Mails mit dem Flag „ANSWERED“

["ANSWERED"]

Alle Mails die den Flag „UNANSWERED“ nicht haben

["UNANSWERED"]

Alle Mails mit dem Flag „DELETED“

["DELETED"]

Alle Mails die den Flag „UNDELETED“ nicht haben

["UNDELETED"]

Alle Mails mit dem Flag „DRAFT“

["DRAFT"]

Alle Mails die den Flag „UNDRAFT“ nicht haben

["UNDRAFT"]

Alle Mails mit dem Flag „FLAGGED“

["FLAGGED"]

Alle Mails die den Flag „UNFLAGGED“ nicht haben

["UNFLAGGED"]

Alle Mails mit dem Flag „RECENT“ und kein „SEEN“ Flag

["NEW"]

Alle Mails die den Flag „RECENT“ nicht haben

["OLD"]

Alle Mails mit dem Flag „SEEN“

["SEEN"]

Alle Mails mit dem Flag „UNSEEN“

["UNSEEN"]

Alle Mails mit dem Flag „RECENT“ -> Neue Mails und noch nicht gesehen

["RECENT"]

Oder auch mehrere möglich:

["UNSEEN", "FLAGGED"]

Alle Mails die am 01.03.2023 bis zum 13.03.2023 eingegangen sind.

["ALL",["SINCE","Mar 01, 2023"],["BEFORE","Mar 13, 2023"]]

Alle Mails mit dem Flag „SEEN“ die seit dem 01.06.2022 (auch mit Urzeit) empfangen wurden.

["ALL",["SINCE", "June 01, 2023"]]
["ALL",["SINCE", "Jun 01, 2023"]]
["ALL",["SINCE", '2023-06-01 23:59:00'] ]

Alle Mails von [email protected]

["ALL", ["HEADER", "FROM", "[email protected]"]]

Alle Mails von [email protected] seit dem 01.03.2023

["ALL", ["HEADER", "FROM", "[email protected]"], ["SINCE", "Mar 01, 2023"]]

Javascript und Blockly Beispiele

  • Abfrage ändern:
sendTo("imap.0", "getBlockly", {search: '["UNSEEN"]', max: 20, device: 'all'});
  • Von einer IMAP Verbindung die ungelesenen eMails der letzten 24h laden:
var delay = 24 * 3600 * 1000;
var yesterday;
yesterday = new Date();
yesterday.setTime(Date.now() - delay);
yesterday = yesterday.toISOString();
var searchCriteria = ['UNSEEN', ['SINCE', yesterday]];
var fetchOptions = { bodies: ['HEADER.FIELDS (FROM TO SUBJECT DATE)'], struct: true };
sendTo("imap.0", "getIMAPRequest", {
  name: "[email protected]",
   max: 20,
   search: searchCriteria,
   fetch:  {"fetch": false, "uid": [1,2,3,4]},
   bodie: fetchOptions,
   parse: true,
}, async function (result) {
    console.log(JSON.stringify(result));
});
  • Von einer IMAP Verbindung die ungelesenen eMails der letzten 24h laden als Blockly:
<xml xmlns="https://developers.google.com/blockly/xml">
  <variables>
    <variable id="m(W@npD`3A65xYwKnwcj">delay</variable>
    <variable id="hcM*MvQp$7|~Sa0DZ!Ab">yesterday</variable>
    <variable id="GpMd@6@ZS_+%P5uFU6Xf">searchCriteria</variable>
    <variable id="u_gz1m7HbB%4B,d^3^wI">fetchOptions</variable>
    <variable id="qZU|)Z7e!djhy7^B:_F/">i</variable>
    <variable id="HfpC*l#[HT(Tbn-x8k28">result</variable>
  </variables>
  <block type="variables_set" id="=2NY}Uw!].hQYzvRV(mH" x="-187" y="13">
    <field name="VAR" id="m(W@npD`3A65xYwKnwcj">delay</field>
    <value name="VALUE">
      <block type="math_arithmetic" id="/DQ9vE:JwEl8e?Vso:yP">
        <field name="OP">ADD</field>
        <value name="A">
          <shadow type="math_number" id="*5rVJ$QDe:U,AFZ17!6A">
            <field name="NUM">1</field>
          </shadow>
          <block type="math_arithmetic" id="o0u2s2ev=HDa^%ql#gLX">
            <field name="OP">MULTIPLY</field>
            <value name="A">
              <shadow type="math_number" id="VW@y;YZ*ZNDd)$C,G{_|">
                <field name="NUM">24</field>
              </shadow>
            </value>
            <value name="B">
              <shadow type="math_number" id="TQqZk{D(:eBUPlmP+`ie">
                <field name="NUM">3600</field>
              </shadow>
            </value>
          </block>
        </value>
        <value name="B">
          <shadow type="math_number" id="z!~Q{K5Q0IkaBw+%5CW7">
            <field name="NUM">1000</field>
          </shadow>
        </value>
      </block>
    </value>
    <next>
      <block type="variables_set" id="}EsqO-eH_m-1aC~fYXc~">
        <field name="VAR" id="hcM*MvQp$7|~Sa0DZ!Ab">yesterday</field>
        <value name="VALUE">
          <block type="math_arithmetic" id="S7tGvoq^2%$HPbgjZc2F">
            <field name="OP">MINUS</field>
            <value name="A">
              <shadow type="math_number" id="]u}(uGe9xvT{`~Fz?DFk">
                <field name="NUM">1</field>
              </shadow>
              <block type="time_get" id="{Oh9nYW%lwA+X9:U0R7~">
                <mutation xmlns="http://www.w3.org/1999/xhtml" format="false" language="false"></mutation>
                <field name="OPTION">object</field>
              </block>
            </value>
            <value name="B">
              <shadow type="math_number" id="nbbdfsxIliB@{zhDU~@S">
                <field name="NUM">1</field>
              </shadow>
              <block type="variables_get" id="NX]g6Y~P~eko^kapF3AW">
                <field name="VAR" id="m(W@npD`3A65xYwKnwcj">delay</field>
              </block>
            </value>
          </block>
        </value>
        <next>
          <block type="variables_set" id=",8lFgiLv/t:}!Sov@6~i">
            <field name="VAR" id="GpMd@6@ZS_+%P5uFU6Xf">searchCriteria</field>
            <value name="VALUE">
              <block type="text_join" id="0g}O`Y[F{C.vZqoi(A*(">
                <mutation items="3"></mutation>
                <value name="ADD0">
                  <block type="text" id="(DM|}NN`uSQU3vr~zF*M">
                    <field name="TEXT">["UNSEEN", ["SINCE", "</field>
                  </block>
                </value>
                <value name="ADD1">
                  <block type="convert_from_date" id="SARFs[%|yh-Ye}muxLU/">
                    <mutation xmlns="http://www.w3.org/1999/xhtml" format="true" language="false"></mutation>
                    <field name="OPTION">custom</field>
                    <field name="FORMAT">JJJJ.MM.TT SS:mm:ss</field>
                    <value name="VALUE">
                      <block type="variables_get" id="4$/iulr^cuAf)YGuUG*1">
                        <field name="VAR" id="hcM*MvQp$7|~Sa0DZ!Ab">yesterday</field>
                      </block>
                    </value>
                  </block>
                </value>
                <value name="ADD2">
                  <block type="text" id="VYh/i3pe/7yO/(6yPy[X">
                    <field name="TEXT">"]]</field>
                  </block>
                </value>
              </block>
            </value>
            <next>
              <block type="variables_set" id="?!kgnGBp|Pxq]NM{e)$W">
                <field name="VAR" id="u_gz1m7HbB%4B,d^3^wI">fetchOptions</field>
                <value name="VALUE">
                  <block type="text" id="+Tk)wTju@S5:h[6v@^}d">
                    <field name="TEXT">{ "bodies": ["HEADER.FIELDS (FROM TO SUBJECT DATE)"], "struct": true }</field>
                  </block>
                </value>
                <next>
                  <block type="imap_request" id="%G80gzr6owuRhlzSE-F#">
                    <field name="INSTANCE">.0</field>
                    <field name="IMAPNAME">[email protected]</field>
                    <field name="MAILPARSER">TRUE</field>
                    <field name="LOG"></field>
                    <value name="SEARCH">
                      <shadow type="text" id="BQ3)vCa;~[ae~`-2vELP">
                        <field name="TEXT">["ALL", ["SINCE", "May 20, 2022"]]</field>
                      </shadow>
                      <block type="variables_get" id="m/AzN}2,.R~v5+?/GX@q">
                        <field name="VAR" id="GpMd@6@ZS_+%P5uFU6Xf">searchCriteria</field>
                      </block>
                    </value>
                    <value name="FETCH">
                      <shadow type="text" id="^54K#+9F1UWzjR(xSf`@">
                        <field name="TEXT">{"fetch": false, "seqno": [1,2,3,4]}</field>
                      </shadow>
                    </value>
                    <value name="BODIES">
                      <shadow type="text" id="PIH8FwXY8i:DqCmj(?Ky">
                        <field name="TEXT">{bodies: "", markSeen: false}</field>
                      </shadow>
                      <block type="variables_get" id="4.Hb;vHPMqcj#`[C,+qs">
                        <field name="VAR" id="u_gz1m7HbB%4B,d^3^wI">fetchOptions</field>
                      </block>
                    </value>
                    <value name="MAX">
                      <shadow type="math_number" id="W13`|!5Z@8~J/r2}*k]t">
                        <field name="NUM">20</field>
                      </shadow>
                    </value>
                    <statement name="STATEMENT">
                      <block type="controls_forEach" id="N{i!P||=v+J)(6s$@yKT">
                        <field name="VAR" id="qZU|)Z7e!djhy7^B:_F/">i</field>
                        <value name="LIST">
                          <block type="variables_get" id="uFg;h;k|JTblE*Vc8!uo">
                            <field name="VAR" id="HfpC*l#[HT(Tbn-x8k28">result</field>
                          </block>
                        </value>
                        <statement name="DO">
                          <block type="debug" id=",v{aDYIITQ;j$(-ik@,z">
                            <field name="Severity">log</field>
                            <value name="TEXT">
                              <shadow type="text" id="HJ}2e*t)OMhT[L]xgGB?">
                                <field name="TEXT">test</field>
                              </shadow>
                              <block type="variables_get" id="`~tiDni=kOxFJ8KF0M.-">
                                <field name="VAR" id="qZU|)Z7e!djhy7^B:_F/">i</field>
                              </block>
                            </value>
                          </block>
                        </statement>
                      </block>
                    </statement>
                  </block>
                </next>
              </block>
            </next>
          </block>
        </next>
      </block>
    </next>
  </block>
</xml>
  • Von einer IMAP Verbindung alle eMails der letzten 24h vollständig laden:
var delay = 24 * 3600 * 1000;
var yesterday;
yesterday = new Date();
yesterday.setTime(Date.now() - delay);
yesterday = yesterday.toISOString();
var searchCriteria = ['ALL', ['SINCE', yesterday]];
var fetchOptions = { bodies: "", struct: true };
sendTo("imap.0", "getIMAPRequest", {
  name: "[email protected]",
   max: 20,
   search: searchCriteria,
   fetch:  {"fetch": false, "uid": [1,2,3,4]},
   bodie: fetchOptions,
   parse: true,
}, async function (result) {
    console.log(JSON.stringify(result));
});
  • Von einer IMAP Verbindung eine eMail mit einer UID vollständig laden:
sendTo("imap.0", "getIMAPRequest", {
  name: "[email protected]",
   max: 20,
   search: ['ALL'],
   fetch:  {"fetch": true, "uid": [267},
   bodie: { bodies: "", struct: true },
   parse: true,
}, async function (result) {
    console.log(JSON.stringify(result));
});
  • Von einer IMAP Verbindung die Anhänge einer eMail speichern. Es wird die UID benötigt:
var i, result, j, json;
sendTo(
    "imap.0",
    "getIMAPRequest",
    {
        name: "[email protected]",
        max: 20,
        search: '["ALL"]',
        fetch: JSON.parse('{"fetch": true, "uid": [21954]}'),
        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];
                json = Buffer.from(getAttr(j, 'content'));
                // Dein Anhang als Buffer
                // console.log(getAttr(json, 'data'));
                console.log(getAttr(j, "filename"));
                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");
                        });
                    }
                });
            }
        }
    },
);
  • eMails eines Benutzer suchen und in einen Ordner verschieben:
var i, result, s;
sendTo("imap.0", "getIMAPRequest", {
    name: "[email protected]",
    max: 20,
    search: '["ALL", ["HEADER", "FROM", "[email protected]"]]',
    fetch:  JSON.parse('{"fetch": false, "seqno": [21954]}'),
    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];
        s = getAttr(i, "attrs.uid");
        setState("imap.0.xxx.remote.move.folder","INBOX/PRIVAT");
        setState("imap.0.xxx.remote.move.uid",s);
        setState("imap.0.xxx.remote.move.apply_move",true);
    }
});
  • Flags setzen:
sendTo("imap.0", "getFlags", {flag: 'setFlags', uid: 123, flagtype: 'Seen', name: '[email protected]'});
  • Flags hinzufügen:
sendTo("imap.0", "getFlags", {flag: 'addFlags', uid: 123, flagtype: 'Seen', name: '[email protected]'});
  • Flags löschen:
sendTo("imap.0", "getFlags", {flag: 'delFlags', uid: 123, flagtype: 'Seen', name: '[email protected]'});
  • Keywords - Möglich wenn imap.0.xxx.status das enthält - "newKeywords": true,

  • Keywords setzen:

sendTo("imap.0", "getFlags", {flag: 'setKeywords', uid: 123, flagtype: 'TEST', name: '[email protected]'});
  • Keywords hinzufügen:
sendTo("imap.0", "getFlags", {flag: 'addKeywords', uid: 123, flagtype: 'TEST', name: '[email protected]'});
  • Keywords löschen:
sendTo("imap.0", "getFlags", {flag: 'delKeywords', uid: 123, flagtype: 'TEST', name: '[email protected]'});

Zurück zur Beschreibung