ImapFlow
IMAP Client library for IMAP API.
The focus for ImapFlow is to provide easy to use API over IMAP. Using ImapFlow does not expect knowledge about specific IMAP details, general understanding is good enough.
IMAP extensions are handled in the background, so for example you can always request labels
value from a {@link FetchQueryObject|fetch()} call but if the IMAP server does not support X-GM-EXT1
extension, then labels
value is not included in the response.
Source
Source code is available from Github.
Usage
Free, AGPL-licensed version
First install the module from npm:
$ npm install imapflow
next import the ImapFlow class into your script:
const { ImapFlow } = require('imapflow');
MIT version
MIT-licensed version is available for Postal Systems subscribers.
First install the module from Postal Systems private registry:
$ npm install @postalsys/imapflow
next import the ImapFlow class into your script:
const { ImapFlow } = require('@postalsys/imapflow');
If you have already built your application using the free version of ImapFlow and do not want to modify require statements in your code, you can install the MIT-licensed version as an alias for "imapflow".
$ npm install imapflow@npm:@postalsys/imapflow
This way you can keep using the old module name
const { ImapFlow } = require('imapflow');
Promises
All ImapFlow methods use Promises, so you need to wait using await
or wait for the then()
method to fire until you get the response.
const { ImapFlow } = require('imapflow');
const client = new ImapFlow({
host: 'ethereal.email',
port: 993,
secure: true,
auth: {
user: 'garland.mcclure71@ethereal.email',
pass: 'mW6e4wWWnEd3H4hT5B'
}
});
const main = async () => {
await client.connect();
let lock = await client.getMailboxLock('INBOX');
try {
let message = await client.fetchOne('*', { source: true });
console.log(message.source.toString());
for await (let message of client.fetch('1:*', { envelope: true })) {
console.log(`${message.uid}: ${message.envelope.subject}`);
}
} finally {
lock.release();
}
await client.logout();
};
main().catch(err => console.error(err));
Documentation
API reference.
License
© 2020 Andris Reinman
Licensed under GNU Affero General Public License v3.0 or later.
MIT-licensed version of ImapFlow is available for Postal Systems subscribers.