postalsys / imapflow

IMAP Client library for EmailEngine Email API (https://emailengine.app)
https://imapflow.com
Other
350 stars 59 forks source link

File download not working or misunderstanding? #188

Closed smilebasti closed 5 months ago

smilebasti commented 5 months ago

Hello, i am trying to download my mails with imapflow.

I am using the following code:

const express = require('express');
const { createServer } = require('http');
const { ImapFlow } = require('imapflow');
const fs = require('fs');

const app = express();
const server = createServer(app);
const port = 8080;

const imapConfig = {
    host: 'imap.goneo.de',
    port: 993,
    secure: true,
    auth: {
        user: 'marianne@wieser-hv.de',
        pass: 'Sebastian31!'
    }
};

app.get('/', async (req, res) => {
    try {
        const client = new ImapFlow(imapConfig);

        await client.connect();

        let lock = await client.getMailboxLock('INBOX');

        //const message = await client.fetchOne('1', { source: true });
        //console.log(message.source.toString());
        console.log('Before download.');

        let { meta, content } = await client.download('1');

        console.log('meta.filename: ' + meta.filename);

        content.pipe(fs.createWriteStream(meta.filename));

        console.log('After download.');
        console.log(meta.filename);
        lock.release();
        await client.logout();

        res.json(message.source.toString());

    } catch (error) {
        console.error(error);
        res.status(500).json({ error: 'Internal Server Error' });
    }

    // log out and close connection

});

server.listen(port, () => {
    console.log("Server is running on http://localhost:" + port);
});

But i am only getting this error when i open the site:

Server is running on http://localhost:8080
2024/04/11 01:02PM 30 pid=1 hostname=5c17f2c4b01c component=imap-connection cid=15dkmyctn04o2cbvsdqn src=connection msg=Established secure TCP connection secure=true host=imap.server.de servername=imap.server.de port=993 address=85.220.11.11 localAddress=172.17.0.6 localPort=47312 authorized=true algo=TLS_AES_256_GCM_SHA384 version=TLSv1.3
2024/04/11 01:02PM 20 pid=1 hostname=5c17f2c4b01c component=imap-connection cid=15dkmyctn04o2cbvsdqn src=s msg=* OK [CAPABILITY IMAP4rev1 SASL-IR LOGIN-REFERRALS ID ENABLE IDLE LITERAL+ AUTH=PLAIN] myserver mail ready.
2024/04/11 01:02PM 20 pid=1 hostname=5c17f2c4b01c component=imap-connection cid=15dkmyctn04o2cbvsdqn src=s msg=1 ID ("name" "imapflow" "version" "1.0.158" "vendor" "Postal Systems" "support-url" "https://github.com/postalsys/imapflow/issues")
2024/04/11 01:02PM 20 pid=1 hostname=5c17f2c4b01c component=imap-connection cid=15dkmyctn04o2cbvsdqn src=s msg=* ID ("name" "Dovecot")
2024/04/11 01:02PM 20 pid=1 hostname=5c17f2c4b01c component=imap-connection cid=15dkmyctn04o2cbvsdqn src=s msg=1 OK ID completed.
2024/04/11 01:02PM 20 pid=1 hostname=5c17f2c4b01c component=imap-connection cid=15dkmyctn04o2cbvsdqn src=s msg=2 LOGIN my@mail.de "(* value hidden *)"
2024/04/11 01:02PM 20 pid=1 hostname=5c17f2c4b01c component=imap-connection cid=15dkmyctn04o2cbvsdqn src=s msg=2 OK [CAPABILITY IMAP4rev1 SASL-IR LOGIN-REFERRALS ID ENABLE IDLE SORT SORT=DISPLAY THREAD=REFERENCES THREAD=REFS THREAD=ORDEREDSUBJECT MULTIAPPEND URL-PARTIAL CATENATE UNSELECT CHILDREN NAMESPACE UIDPLUS LIST-EXTENDED I18NLEVEL=1 CONDSTORE QRESYNC ESEARCH ESORT SEARCHRES WITHIN CONTEXT=SEARCH LIST-STATUS BINARY MOVE SNIPPET=FUZZY PREVIEW=FUZZY PREVIEW STATUS=SIZE SAVEDATE LITERAL+ NOTIFY SPECIAL-USE QUOTA] Logged in
2024/04/11 01:02PM 30 pid=1 hostname=5c17f2c4b01c component=imap-connection cid=15dkmyctn04o2cbvsdqn src=auth msg=User authenticated user=my@mail.de
2024/04/11 01:02PM 20 pid=1 hostname=5c17f2c4b01c component=imap-connection cid=15dkmyctn04o2cbvsdqn src=s msg=3 NAMESPACE
2024/04/11 01:02PM 20 pid=1 hostname=5c17f2c4b01c component=imap-connection cid=15dkmyctn04o2cbvsdqn src=s msg=* NAMESPACE (("" "/")) NIL NIL
2024/04/11 01:02PM 20 pid=1 hostname=5c17f2c4b01c component=imap-connection cid=15dkmyctn04o2cbvsdqn src=s msg=3 OK Namespace completed (0.001 + 0.000 secs).
2024/04/11 01:02PM 20 pid=1 hostname=5c17f2c4b01c component=imap-connection cid=15dkmyctn04o2cbvsdqn src=s msg=4 ENABLE CONDSTORE
2024/04/11 01:02PM 20 pid=1 hostname=5c17f2c4b01c component=imap-connection cid=15dkmyctn04o2cbvsdqn src=s msg=* ENABLED CONDSTORE
2024/04/11 01:02PM 20 pid=1 hostname=5c17f2c4b01c component=imap-connection cid=15dkmyctn04o2cbvsdqn src=s msg=4 OK Enabled (0.001 + 0.000 secs).
2024/04/11 01:02PM 10 pid=1 hostname=5c17f2c4b01c component=imap-connection cid=15dkmyctn04o2cbvsdqn msg=Requesting lock path=INBOX lockId=1 activeLock=null
2024/04/11 01:02PM 20 pid=1 hostname=5c17f2c4b01c component=imap-connection cid=15dkmyctn04o2cbvsdqn src=s msg=5 LIST "" "INBOX"
2024/04/11 01:02PM 20 pid=1 hostname=5c17f2c4b01c component=imap-connection cid=15dkmyctn04o2cbvsdqn src=s msg=* LIST (\HasNoChildren) "/" INBOX
2024/04/11 01:02PM 20 pid=1 hostname=5c17f2c4b01c component=imap-connection cid=15dkmyctn04o2cbvsdqn src=s msg=5 OK List completed (0.001 + 0.000 secs).
2024/04/11 01:02PM 20 pid=1 hostname=5c17f2c4b01c component=imap-connection cid=15dkmyctn04o2cbvsdqn src=s msg=6 LSUB "" "INBOX"
2024/04/11 01:02PM 20 pid=1 hostname=5c17f2c4b01c component=imap-connection cid=15dkmyctn04o2cbvsdqn src=s msg=* LSUB () "/" INBOX
2024/04/11 01:02PM 20 pid=1 hostname=5c17f2c4b01c component=imap-connection cid=15dkmyctn04o2cbvsdqn src=s msg=6 OK Lsub completed (0.001 + 0.000 secs).
2024/04/11 01:02PM 20 pid=1 hostname=5c17f2c4b01c component=imap-connection cid=15dkmyctn04o2cbvsdqn src=s msg=7 SELECT INBOX
2024/04/11 01:02PM 20 pid=1 hostname=5c17f2c4b01c component=imap-connection cid=15dkmyctn04o2cbvsdqn src=s msg=* FLAGS (\Answered \Flagged \Deleted \Seen \Draft $Forwarded Forwarded)
Before download.
2024/04/11 01:02PM 20 pid=1 hostname=5c17f2c4b01c component=imap-connection cid=15dkmyctn04o2cbvsdqn src=s msg=* OK [PERMANENTFLAGS (\Answered \Flagged \Deleted \Seen \Draft $Forwarded Forwarded "\\*")] Flags permitted.
2024/04/11 01:02PM 20 pid=1 hostname=5c17f2c4b01c component=imap-connection cid=15dkmyctn04o2cbvsdqn src=s msg=* 79 EXISTS
2024/04/11 01:02PM 20 pid=1 hostname=5c17f2c4b01c component=imap-connection cid=15dkmyctn04o2cbvsdqn src=s msg=* 0 RECENT
2024/04/11 01:02PM 20 pid=1 hostname=5c17f2c4b01c component=imap-connection cid=15dkmyctn04o2cbvsdqn src=s msg=* OK [UIDVALIDITY 1645188819] UIDs valid
2024/04/11 01:02PM 20 pid=1 hostname=5c17f2c4b01c component=imap-connection cid=15dkmyctn04o2cbvsdqn src=s msg=* OK [UIDNEXT 124] Predicted next UID
2024/04/11 01:02PM 20 pid=1 hostname=5c17f2c4b01c component=imap-connection cid=15dkmyctn04o2cbvsdqn src=s msg=* OK [HIGHESTMODSEQ 301] Highest
2024/04/11 01:02PM 20 pid=1 hostname=5c17f2c4b01c component=imap-connection cid=15dkmyctn04o2cbvsdqn src=s msg=7 OK [READ-WRITE] Select completed (0.001 + 0.000 secs).
2024/04/11 01:02PM 10 pid=1 hostname=5c17f2c4b01c component=imap-connection cid=15dkmyctn04o2cbvsdqn msg=Mailbox lock acquired [selected] path=INBOX lockId=1 idling=false
2024/04/11 01:02PM 20 pid=1 hostname=5c17f2c4b01c component=imap-connection cid=15dkmyctn04o2cbvsdqn src=s msg=8 FETCH 1 (UID RFC822.SIZE BODY.PEEK[]<0.65536> MODSEQ)
2024/04/11 01:02PM 10 pid=1 hostname=5c17f2c4b01c component=imap-connection cid=15dkmyctn04o2cbvsdqn src=s msg=* 1 FETCH (UID 4 RFC822.SIZE 679836 MODSEQ (12) BODY[]<0> "(* 65536B literal *)")
meta.filename: undefined
TypeError [ERR_INVALID_ARG_TYPE]: The "path" argument must be of type string or an instance of Buffer or URL. Received undefined
    at new WriteStream (node:internal/fs/streams:340:5)
    at Object.createWriteStream (node:fs:3123:10)
    at /home/node/app/app.js:37:25
    at process.processTicksAndRejections (node:internal/process/task_queues:95:5) {
  code: 'ERR_INVALID_ARG_TYPE'
}
2024/04/11 01:02PM 20 pid=1 hostname=5c17f2c4b01c component=imap-connection cid=15dkmyctn04o2cbvsdqn src=s msg=8 OK Fetch completed (0.009 + 0.000 + 0.008 secs).
2024/04/11 01:02PM 20 pid=1 hostname=5c17f2c4b01c component=imap-connection cid=15dkmyctn04o2cbvsdqn src=s msg=9 UID FETCH 4 (BODY.PEEK[]<65536.65536> MODSEQ UID)
2024/04/11 01:02PM 10 pid=1 hostname=5c17f2c4b01c component=imap-connection cid=15dkmyctn04o2cbvsdqn src=s msg=* 1 FETCH (UID 4 MODSEQ (12) BODY[]<65536> "(* 65536B literal *)")
2024/04/11 01:02PM 20 pid=1 hostname=5c17f2c4b01c component=imap-connection cid=15dkmyctn04o2cbvsdqn src=s msg=9 OK Fetch completed (0.001 + 0.000 secs).

I am not sure where my error lives? I can't figure out why my meta.filename is empty....

Any help would be greatly appreciated :).

andris9 commented 5 months ago

You are downloading the entire EML file. There is no filename set for it. Filename applies for attachments only.

smilebasti commented 5 months ago

Thank you very much @andris9. It works, partially... When i execute it with a predefined file name it works till the command await client.logout();. Then the download fails with:

2024/04/13 05:21PM 10 pid=1 hostname=5c17f2c4b01c component=imap-connection cid=ejz99rrvqjehuw7q8p1e msg=Requesting lock path=INBOX lockId=1 activeLock=null
2024/04/13 05:21PM 20 pid=1 hostname=5c17f2c4b01c component=imap-connection cid=ejz99rrvqjehuw7q8p1e src=s msg=5 LIST "" "INBOX"
2024/04/13 05:21PM 20 pid=1 hostname=5c17f2c4b01c component=imap-connection cid=ejz99rrvqjehuw7q8p1e src=s msg=* LIST (\HasNoChildren) "/" INBOX
2024/04/13 05:21PM 20 pid=1 hostname=5c17f2c4b01c component=imap-connection cid=ejz99rrvqjehuw7q8p1e src=s msg=5 OK List completed (0.001 + 0.000 + 0.001 secs).
2024/04/13 05:21PM 20 pid=1 hostname=5c17f2c4b01c component=imap-connection cid=ejz99rrvqjehuw7q8p1e src=s msg=6 LSUB "" "INBOX"
2024/04/13 05:21PM 20 pid=1 hostname=5c17f2c4b01c component=imap-connection cid=ejz99rrvqjehuw7q8p1e src=s msg=* LSUB () "/" INBOX
2024/04/13 05:21PM 20 pid=1 hostname=5c17f2c4b01c component=imap-connection cid=ejz99rrvqjehuw7q8p1e src=s msg=6 OK Lsub completed (0.027 + 0.000 + 0.026 secs).
2024/04/13 05:21PM 20 pid=1 hostname=5c17f2c4b01c component=imap-connection cid=ejz99rrvqjehuw7q8p1e src=s msg=7 SELECT INBOX
2024/04/13 05:21PM 20 pid=1 hostname=5c17f2c4b01c component=imap-connection cid=ejz99rrvqjehuw7q8p1e src=s msg=* FLAGS (\Answered \Flagged \Deleted \Seen \Draft $Forwarded Forwarded)
Before download.
2024/04/13 05:21PM 20 pid=1 hostname=5c17f2c4b01c component=imap-connection cid=ejz99rrvqjehuw7q8p1e src=s msg=* OK [PERMANENTFLAGS (\Answered \Flagged \Deleted \Seen \Draft $Forwarded Forwarded "\\*")] Flags permitted.
2024/04/13 05:21PM 20 pid=1 hostname=5c17f2c4b01c component=imap-connection cid=ejz99rrvqjehuw7q8p1e src=s msg=* 80 EXISTS
2024/04/13 05:21PM 20 pid=1 hostname=5c17f2c4b01c component=imap-connection cid=ejz99rrvqjehuw7q8p1e src=s msg=* 0 RECENT
2024/04/13 05:21PM 20 pid=1 hostname=5c17f2c4b01c component=imap-connection cid=ejz99rrvqjehuw7q8p1e src=s msg=* OK [UNSEEN 80] First unseen.
2024/04/13 05:21PM 20 pid=1 hostname=5c17f2c4b01c component=imap-connection cid=ejz99rrvqjehuw7q8p1e src=s msg=* OK [UIDVALIDITY 1645188819] UIDs valid
2024/04/13 05:21PM 20 pid=1 hostname=5c17f2c4b01c component=imap-connection cid=ejz99rrvqjehuw7q8p1e src=s msg=* OK [UIDNEXT 125] Predicted next UID
2024/04/13 05:21PM 20 pid=1 hostname=5c17f2c4b01c component=imap-connection cid=ejz99rrvqjehuw7q8p1e src=s msg=* OK [HIGHESTMODSEQ 302] Highest
2024/04/13 05:21PM 20 pid=1 hostname=5c17f2c4b01c component=imap-connection cid=ejz99rrvqjehuw7q8p1e src=s msg=7 OK [READ-WRITE] Select completed (0.001 + 0.000 secs).
2024/04/13 05:21PM 10 pid=1 hostname=5c17f2c4b01c component=imap-connection cid=ejz99rrvqjehuw7q8p1e msg=Mailbox lock acquired [selected] path=INBOX lockId=1 idling=false
2024/04/13 05:21PM 20 pid=1 hostname=5c17f2c4b01c component=imap-connection cid=ejz99rrvqjehuw7q8p1e src=s msg=8 FETCH 1 (UID RFC822.SIZE BODY.PEEK[]<0.65536> MODSEQ)
2024/04/13 05:21PM 10 pid=1 hostname=5c17f2c4b01c component=imap-connection cid=ejz99rrvqjehuw7q8p1e src=s msg=* 1 FETCH (UID 4 RFC822.SIZE 679836 MODSEQ (12) BODY[]<0> "(* 65536B literal *)")
After download.
2024/04/13 05:21PM 20 pid=1 hostname=5c17f2c4b01c component=imap-connection cid=ejz99rrvqjehuw7q8p1e src=s msg=8 OK Fetch completed (0.111 + 0.000 + 0.110 secs).
2024/04/13 05:21PM 10 pid=1 hostname=5c17f2c4b01c component=imap-connection cid=ejz99rrvqjehuw7q8p1e msg=Mailbox lock released lockId=1 path=INBOX pending=0 idling=false
2024/04/13 05:21PM 10 pid=1 hostname=5c17f2c4b01c component=imap-connection cid=ejz99rrvqjehuw7q8p1e msg=Mailbox locking queue processed idling=false
2024/04/13 05:21PM 20 pid=1 hostname=5c17f2c4b01c component=imap-connection cid=ejz99rrvqjehuw7q8p1e src=s msg=9 LOGOUT
2024/04/13 05:21PM 20 pid=1 hostname=5c17f2c4b01c component=imap-connection cid=ejz99rrvqjehuw7q8p1e src=s msg=* BYE Logging out

After logout
2024/04/13 05:21PM 20 pid=1 hostname=5c17f2c4b01c component=imap-connection cid=ejz99rrvqjehuw7q8p1e src=s msg=9 OK Logout completed (0.001 + 0.000 secs).
2024/04/13 05:21PM 40 pid=1 hostname=5c17f2c4b01c component=imap-connection cid=ejz99rrvqjehuw7q8p1e err={"type":"Error","message":"Connection not available","stack":"Error: Connection not available\n    at ImapFlow.send (/home/node/app/node_modules/imapflow/lib/imap-flow.js:384:35)\n    at ImapFlow.trySend (/home/node/app/node_modules/imapflow/lib/imap-flow.js:418:20)\n    at ImapFlow.reader (/home/node/app/node_modules/imapflow/lib/imap-flow.js:553:32)\n    at process.processTicksAndRejections (node:internal/process/task_queues:95:5)","code":"NoConnection"} msg=Connection not available
2024/04/13 05:21PM 10 pid=1 hostname=5c17f2c4b01c component=imap-connection cid=ejz99rrvqjehuw7q8p1e msg=Connection closed
node:events:496
      throw er; // Unhandled 'error' event
      ^
Error: Connection not available
    at ImapFlow.send (/home/node/app/node_modules/imapflow/lib/imap-flow.js:384:35)
    at ImapFlow.trySend (/home/node/app/node_modules/imapflow/lib/imap-flow.js:418:20)
    at ImapFlow.reader (/home/node/app/node_modules/imapflow/lib/imap-flow.js:553:32)
    at process.processTicksAndRejections (node:internal/process/task_queues:95:5)
Emitted 'error' event on LimitedPassthrough instance at:
    at emitErrorNT (node:internal/streams/destroy:169:8)
    at emitErrorCloseNT (node:internal/streams/destroy:128:3)
    at process.processTicksAndRejections (node:internal/process/task_queues:82:21) {
  code: 'NoConnection'
}
Node.js v20.11.1

Without the command await client.logout(); it works but then is in the idle state:

2024/04/12 06:30PM 20 pid=1 hostname=5c17f2c4b01c component=imap-connection cid=di2eq9bxldgzwwr3s5kd src=s msg=2 OK [CAPABILITY IMAP4rev1 SASL-IR LOGIN-REFERRALS ID ENABLE IDLE SORT SORT=DISPLAY THREAD=REFERENCES THREAD=REFS THREAD=ORDEREDSUBJECT MULTIAPPEND URL-PARTIAL CATENATE UNSELECT CHILDREN NAMESPACE UIDPLUS LIST-EXTENDED I18NLEVEL=1 CONDSTORE QRESYNC ESEARCH ESORT SEARCHRES WITHIN CONTEXT=SEARCH LIST-STATUS BINARY MOVE SNIPPET=FUZZY PREVIEW=FUZZY PREVIEW STATUS=SIZE SAVEDATE LITERAL+ NOTIFY SPECIAL-USE QUOTA] Logged in
2024/04/12 06:30PM 30 pid=1 hostname=5c17f2c4b01c component=imap-connection cid=di2eq9bxldgzwwr3s5kd src=auth msg=User authenticated user=my@mail.de
2024/04/12 06:30PM 20 pid=1 hostname=5c17f2c4b01c component=imap-connection cid=di2eq9bxldgzwwr3s5kd src=s msg=3 NAMESPACE
2024/04/12 06:30PM 20 pid=1 hostname=5c17f2c4b01c component=imap-connection cid=di2eq9bxldgzwwr3s5kd src=s msg=* NAMESPACE (("" "/")) NIL NIL
2024/04/12 06:30PM 20 pid=1 hostname=5c17f2c4b01c component=imap-connection cid=di2eq9bxldgzwwr3s5kd src=s msg=3 OK Namespace completed (0.001 + 0.000 secs).
2024/04/12 06:30PM 20 pid=1 hostname=5c17f2c4b01c component=imap-connection cid=di2eq9bxldgzwwr3s5kd src=s msg=4 ENABLE CONDSTORE
2024/04/12 06:30PM 20 pid=1 hostname=5c17f2c4b01c component=imap-connection cid=di2eq9bxldgzwwr3s5kd src=s msg=* ENABLED CONDSTORE
2024/04/12 06:30PM 20 pid=1 hostname=5c17f2c4b01c component=imap-connection cid=di2eq9bxldgzwwr3s5kd src=s msg=4 OK Enabled (0.001 + 0.000 secs).
2024/04/12 06:30PM 10 pid=1 hostname=5c17f2c4b01c component=imap-connection cid=di2eq9bxldgzwwr3s5kd msg=Requesting lock path=INBOX lockId=1 activeLock=null
2024/04/12 06:30PM 20 pid=1 hostname=5c17f2c4b01c component=imap-connection cid=di2eq9bxldgzwwr3s5kd src=s msg=5 LIST "" "INBOX"
2024/04/12 06:30PM 20 pid=1 hostname=5c17f2c4b01c component=imap-connection cid=di2eq9bxldgzwwr3s5kd src=s msg=* LIST (\HasNoChildren) "/" INBOX
2024/04/12 06:30PM 20 pid=1 hostname=5c17f2c4b01c component=imap-connection cid=di2eq9bxldgzwwr3s5kd src=s msg=5 OK List completed (0.001 + 0.000 secs).
2024/04/12 06:30PM 20 pid=1 hostname=5c17f2c4b01c component=imap-connection cid=di2eq9bxldgzwwr3s5kd src=s msg=6 LSUB "" "INBOX"
2024/04/12 06:30PM 20 pid=1 hostname=5c17f2c4b01c component=imap-connection cid=di2eq9bxldgzwwr3s5kd src=s msg=* LSUB () "/" INBOX
2024/04/12 06:30PM 20 pid=1 hostname=5c17f2c4b01c component=imap-connection cid=di2eq9bxldgzwwr3s5kd src=s msg=6 OK Lsub completed (0.001 + 0.000 secs).
2024/04/12 06:30PM 20 pid=1 hostname=5c17f2c4b01c component=imap-connection cid=di2eq9bxldgzwwr3s5kd src=s msg=7 SELECT INBOX
2024/04/12 06:30PM 20 pid=1 hostname=5c17f2c4b01c component=imap-connection cid=di2eq9bxldgzwwr3s5kd src=s msg=* FLAGS (\Answered \Flagged \Deleted \Seen \Draft $Forwarded Forwarded)
Before download.
2024/04/12 06:30PM 20 pid=1 hostname=5c17f2c4b01c component=imap-connection cid=di2eq9bxldgzwwr3s5kd src=s msg=* OK [PERMANENTFLAGS (\Answered \Flagged \Deleted \Seen \Draft $Forwarded Forwarded "\\*")] Flags permitted.
2024/04/12 06:30PM 20 pid=1 hostname=5c17f2c4b01c component=imap-connection cid=di2eq9bxldgzwwr3s5kd src=s msg=* 80 EXISTS
2024/04/12 06:30PM 20 pid=1 hostname=5c17f2c4b01c component=imap-connection cid=di2eq9bxldgzwwr3s5kd src=s msg=* 0 RECENT
2024/04/12 06:30PM 20 pid=1 hostname=5c17f2c4b01c component=imap-connection cid=di2eq9bxldgzwwr3s5kd src=s msg=* OK [UNSEEN 80] First unseen.
2024/04/12 06:30PM 20 pid=1 hostname=5c17f2c4b01c component=imap-connection cid=di2eq9bxldgzwwr3s5kd src=s msg=* OK [UIDVALIDITY 1645188819] UIDs valid
2024/04/12 06:30PM 20 pid=1 hostname=5c17f2c4b01c component=imap-connection cid=di2eq9bxldgzwwr3s5kd src=s msg=* OK [UIDNEXT 125] Predicted next UID
2024/04/12 06:30PM 20 pid=1 hostname=5c17f2c4b01c component=imap-connection cid=di2eq9bxldgzwwr3s5kd src=s msg=* OK [HIGHESTMODSEQ 302] Highest
2024/04/12 06:30PM 20 pid=1 hostname=5c17f2c4b01c component=imap-connection cid=di2eq9bxldgzwwr3s5kd src=s msg=7 OK [READ-WRITE] Select completed (0.001 + 0.000 secs).
2024/04/12 06:30PM 10 pid=1 hostname=5c17f2c4b01c component=imap-connection cid=di2eq9bxldgzwwr3s5kd msg=Mailbox lock acquired [selected] path=INBOX lockId=1 idling=false
2024/04/12 06:30PM 20 pid=1 hostname=5c17f2c4b01c component=imap-connection cid=di2eq9bxldgzwwr3s5kd src=s msg=8 FETCH 1 (UID RFC822.SIZE BODY.PEEK[]<0.65536> MODSEQ)
2024/04/12 06:30PM 10 pid=1 hostname=5c17f2c4b01c component=imap-connection cid=di2eq9bxldgzwwr3s5kd src=s msg=* 1 FETCH (UID 4 RFC822.SIZE 679836 MODSEQ (12) BODY[]<0> "(* 65536B literal *)")
After download.

After logout
2024/04/12 06:30PM 20 pid=1 hostname=5c17f2c4b01c component=imap-connection cid=di2eq9bxldgzwwr3s5kd src=s msg=8 OK Fetch completed (0.009 + 0.000 + 0.008 secs).
2024/04/12 06:30PM 10 pid=1 hostname=5c17f2c4b01c component=imap-connection cid=di2eq9bxldgzwwr3s5kd msg=Mailbox lock released lockId=1 path=INBOX pending=0 idling=false
2024/04/12 06:30PM 10 pid=1 hostname=5c17f2c4b01c component=imap-connection cid=di2eq9bxldgzwwr3s5kd msg=Mailbox locking queue processed idling=false
2024/04/12 06:30PM 20 pid=1 hostname=5c17f2c4b01c component=imap-connection cid=di2eq9bxldgzwwr3s5kd src=s msg=9 UID FETCH 4 (BODY.PEEK[]<65536.65536> MODSEQ UID)
2024/04/12 06:30PM 10 pid=1 hostname=5c17f2c4b01c component=imap-connection cid=di2eq9bxldgzwwr3s5kd src=s msg=* 1 FETCH (UID 4 MODSEQ (12) BODY[]<65536> "(* 65536B literal *)")
2024/04/12 06:30PM 20 pid=1 hostname=5c17f2c4b01c component=imap-connection cid=di2eq9bxldgzwwr3s5kd src=s msg=9 OK Fetch completed (0.001 + 0.000 secs).
2024/04/12 06:30PM 20 pid=1 hostname=5c17f2c4b01c component=imap-connection cid=di2eq9bxldgzwwr3s5kd src=s msg=A UID FETCH 4 (BODY.PEEK[]<131072.65536> MODSEQ UID)
2024/04/12 06:30PM 10 pid=1 hostname=5c17f2c4b01c component=imap-connection cid=di2eq9bxldgzwwr3s5kd src=s msg=* 1 FETCH (UID 4 MODSEQ (12) BODY[]<131072> "(* 65536B literal *)")
2024/04/12 06:30PM 20 pid=1 hostname=5c17f2c4b01c component=imap-connection cid=di2eq9bxldgzwwr3s5kd src=s msg=A OK Fetch completed (0.001 + 0.000 secs).
2024/04/12 06:30PM 20 pid=1 hostname=5c17f2c4b01c component=imap-connection cid=di2eq9bxldgzwwr3s5kd src=s msg=B UID FETCH 4 (BODY.PEEK[]<196608.65536> MODSEQ UID)
2024/04/12 06:30PM 10 pid=1 hostname=5c17f2c4b01c component=imap-connection cid=di2eq9bxldgzwwr3s5kd src=s msg=* 1 FETCH (UID 4 MODSEQ (12) BODY[]<196608> "(* 65536B literal *)")
2024/04/12 06:30PM 20 pid=1 hostname=5c17f2c4b01c component=imap-connection cid=di2eq9bxldgzwwr3s5kd src=s msg=B OK Fetch completed (0.001 + 0.000 secs).
2024/04/12 06:30PM 20 pid=1 hostname=5c17f2c4b01c component=imap-connection cid=di2eq9bxldgzwwr3s5kd src=s msg=C UID FETCH 4 (BODY.PEEK[]<262144.65536> MODSEQ UID)
2024/04/12 06:30PM 10 pid=1 hostname=5c17f2c4b01c component=imap-connection cid=di2eq9bxldgzwwr3s5kd src=s msg=* 1 FETCH (UID 4 MODSEQ (12) BODY[]<262144> "(* 65536B literal *)")
2024/04/12 06:30PM 20 pid=1 hostname=5c17f2c4b01c component=imap-connection cid=di2eq9bxldgzwwr3s5kd src=s msg=C OK Fetch completed (0.001 + 0.000 secs).
2024/04/12 06:30PM 20 pid=1 hostname=5c17f2c4b01c component=imap-connection cid=di2eq9bxldgzwwr3s5kd src=s msg=D UID FETCH 4 (BODY.PEEK[]<327680.65536> MODSEQ UID)
2024/04/12 06:30PM 10 pid=1 hostname=5c17f2c4b01c component=imap-connection cid=di2eq9bxldgzwwr3s5kd src=s msg=* 1 FETCH (UID 4 MODSEQ (12) BODY[]<327680> "(* 65536B literal *)")
2024/04/12 06:30PM 20 pid=1 hostname=5c17f2c4b01c component=imap-connection cid=di2eq9bxldgzwwr3s5kd src=s msg=D OK Fetch completed (0.001 + 0.000 secs).
2024/04/12 06:30PM 20 pid=1 hostname=5c17f2c4b01c component=imap-connection cid=di2eq9bxldgzwwr3s5kd src=s msg=E UID FETCH 4 (BODY.PEEK[]<393216.65536> MODSEQ UID)
2024/04/12 06:30PM 10 pid=1 hostname=5c17f2c4b01c component=imap-connection cid=di2eq9bxldgzwwr3s5kd src=s msg=* 1 FETCH (UID 4 MODSEQ (12) BODY[]<393216> "(* 65536B literal *)")
2024/04/12 06:30PM 20 pid=1 hostname=5c17f2c4b01c component=imap-connection cid=di2eq9bxldgzwwr3s5kd src=s msg=E OK Fetch completed (0.001 + 0.000 secs).
2024/04/12 06:30PM 20 pid=1 hostname=5c17f2c4b01c component=imap-connection cid=di2eq9bxldgzwwr3s5kd src=s msg=F UID FETCH 4 (BODY.PEEK[]<458752.65536> MODSEQ UID)
2024/04/12 06:30PM 10 pid=1 hostname=5c17f2c4b01c component=imap-connection cid=di2eq9bxldgzwwr3s5kd src=s msg=* 1 FETCH (UID 4 MODSEQ (12) BODY[]<458752> "(* 65536B literal *)")
2024/04/12 06:30PM 20 pid=1 hostname=5c17f2c4b01c component=imap-connection cid=di2eq9bxldgzwwr3s5kd src=s msg=F OK Fetch completed (0.001 + 0.000 secs).
2024/04/12 06:30PM 20 pid=1 hostname=5c17f2c4b01c component=imap-connection cid=di2eq9bxldgzwwr3s5kd src=s msg=10 UID FETCH 4 (BODY.PEEK[]<524288.65536> MODSEQ UID)
2024/04/12 06:30PM 10 pid=1 hostname=5c17f2c4b01c component=imap-connection cid=di2eq9bxldgzwwr3s5kd src=s msg=* 1 FETCH (UID 4 MODSEQ (12) BODY[]<524288> "(* 65536B literal *)")
2024/04/12 06:30PM 20 pid=1 hostname=5c17f2c4b01c component=imap-connection cid=di2eq9bxldgzwwr3s5kd src=s msg=10 OK Fetch completed (0.001 + 0.000 secs).
2024/04/12 06:30PM 20 pid=1 hostname=5c17f2c4b01c component=imap-connection cid=di2eq9bxldgzwwr3s5kd src=s msg=11 UID FETCH 4 (BODY.PEEK[]<589824.65536> MODSEQ UID)
2024/04/12 06:30PM 10 pid=1 hostname=5c17f2c4b01c component=imap-connection cid=di2eq9bxldgzwwr3s5kd src=s msg=* 1 FETCH (UID 4 MODSEQ (12) BODY[]<589824> "(* 65536B literal *)")
2024/04/12 06:30PM 20 pid=1 hostname=5c17f2c4b01c component=imap-connection cid=di2eq9bxldgzwwr3s5kd src=s msg=11 OK Fetch completed (0.001 + 0.000 secs).
2024/04/12 06:30PM 20 pid=1 hostname=5c17f2c4b01c component=imap-connection cid=di2eq9bxldgzwwr3s5kd src=s msg=12 UID FETCH 4 (BODY.PEEK[]<655360.65536> MODSEQ UID)
2024/04/12 06:30PM 10 pid=1 hostname=5c17f2c4b01c component=imap-connection cid=di2eq9bxldgzwwr3s5kd src=s msg=* 1 FETCH (UID 4 MODSEQ (12) BODY[]<655360> "(* 24476B literal *)")
2024/04/12 06:30PM 20 pid=1 hostname=5c17f2c4b01c component=imap-connection cid=di2eq9bxldgzwwr3s5kd src=s msg=12 OK Fetch completed (0.001 + 0.000 secs).
2024/04/12 06:30PM 20 pid=1 hostname=5c17f2c4b01c component=imap-connection cid=di2eq9bxldgzwwr3s5kd src=s msg=13 IDLE
2024/04/12 06:30PM 20 pid=1 hostname=5c17f2c4b01c component=imap-connection cid=di2eq9bxldgzwwr3s5kd src=s msg=+ idling
2024/04/12 06:30PM 20 pid=1 hostname=5c17f2c4b01c component=imap-connection cid=di2eq9bxldgzwwr3s5kd msg=Initiated IDLE, waiting for server input doneRequested=false
2024/04/12 06:30PM 20 pid=1 hostname=5c17f2c4b01c component=imap-connection cid=di2eq9bxldgzwwr3s5kd src=s msg=* OK Still here
2024/04/12 06:32PM 20 pid=1 hostname=5c17f2c4b01c component=imap-connection cid=di2eq9bxldgzwwr3s5kd src=s msg=* OK Still here

My current Code:

const express = require('express');
const { createServer } = require('http');
const { ImapFlow } = require('imapflow');
const fs = require('fs');

const app = express();
const server = createServer(app);
const port = 8080;

const client = new ImapFlow({
    host: 'imap.goneo.de',
    port: 993,
    secure: true,
    auth: {
        user: 'marianne@wieser-hv.de',
        pass: 'Sebastian31!'
    }
});

app.get('/', async (req, res) => {
    await client.connect();
    try {

        let lock = await client.getMailboxLock('INBOX');

        console.log('Before download.');

        let { meta, content } = await client.download('1');
        content.pipe(fs.createWriteStream('testname.eml'));

        console.log('After download.');
        lock.release();

        res.json('Test Message');

    } catch (error) {
        console.error(error);
        res.status(500).json({ error: 'Internal Server Error' });
    }
    finally{
        //await client.logout();
        console.log('After logout');
    }

});

server.listen(port, () => {
    console.log("Server is running on http://localhost:" + port);
});

How would i go about it to check if the download is complete and then logout?

smilebasti commented 4 months ago

Hi, i'm still not sure how to continue. Any help would be very appreciated. Thanks ahead.