const { ImapFlow } = require('imapflow'); const client = new ImapFlow({ host: 'imap.strato.de', port: 993, secure: true, auth: { user: 'info@federspiel.tech', pass: 'fpGUpbQG34' }, logger: {} }); const main = async () => { // Wait until client connects and authorizes await client.connect(); // Select and lock a mailbox. Throws if mailbox does not exist let lock = await client.getMailboxLock('INBOX'); try { // fetch latest message source // client.mailbox includes information about currently selected mailbox // "exists" value is also the largest sequence number available in the mailbox let message = await client.fetchOne(client.mailbox.exists, { source: true }); //console.log(message.source.toString()); // list subjects for all messages // uid value is always included in FETCH response, envelope strings are in unicode. for await (let message of client.fetch('1', { source:true , envelope: true, flags:true, bodyStructure: true, labels:true, bodyParts: true })) { console.log(`${message.uid}: ${message.envelope.subject}`); //console.log(`${message.envelope}`); console.log(message) console.log(message.bodyStructure.childNodes) message.bodyStructure.childNodes.forEach(i => console.log(i)) } let data = await client.download('1','1.1'); console.log(data) data.content.pipe(process.stdout) /*let tree = await client.listTree(); console.log(tree) tree.folders.forEach(mailbox => console.log(mailbox.path))*/ } finally { // Make sure lock is released, otherwise next `getMailboxLock()` never returns lock.release(); } /*let mailbox = await client.mailboxOpen('INBOX'); // fetch UID for the last email in the selected mailbox let lastMsg = await client.fetchOne('*', {uid: true}) console.log(lastMsg.uid);*/ // log out and close connection await client.logout(); }; main().catch(err => {}/*console.error(err)*/);