Overview
mail-listener-next library for node.js. Get notification when new email arrived to inbox or when message metadata (e.g. flags) changes externally. Uses IMAP protocol.
mail-listener-next is based on and includes changes and improvements from forks of Mail-listener2.
The changes are:
- Avoid to process the same email multiple times
- Fix unread param on empty response
- Add a restart function to reconnect to imap server
- Enhanced logging for the new features
- Pass email object to attachment event
- Update mime dependency version to ^1.0.0 because mime 2.0.0 package break the API
We are using these libraries: node-imap, mailparser.
Heavily inspired by mail-listener2 & mail-listener2-updated
Use
Install
npm install mail-listener-next
JavaScript Code:
var MailListener = ; var mailListener = username: "imap-username" password: "imap-password" host: "imap-host" port: 993 // imap port tls: true connTimeout: 10000 // Default by node-imap authTimeout: 5000 // Default by node-imap, debug: consolelog // Or your custom function with only one incoming argument. Default: null tlsOptions: rejectUnauthorized: false mailbox: "INBOX" // mailbox to monitor searchFilter: "UNSEEN" "FLAGGED" // the search filter being used after an IDLE notification has been retrieved fetchUnreadOnStart: true // use it only if you want to get all unread email on lib start. Default is `false`, mailParserOptions: streamAttachments: true // options to be passed to mailParser lib. attachments: true // download attachments as they are encountered to the project directory attachmentOptions: directory: "attachments/" // specify a download directory for attachments // to make server respond to other requests you may want // to pause for 'fetchingPauseTime' fetching of the email, because it 'hangs' your app fetchingPauseThreshold: null // amount bytes fetchingPauseTime: 5000 // ms to pause fetching and process other requests; mailListenerstart; // start listening // stop listening//mailListener.stop(); mailListener; mailListener; mailListener; mailListener; mailListener; // it's possible to access imap object from node-imap library for performing additional actions. E.x.mailListenerimap
That's easy!
Attachments
Attachments can be streamed or buffered. This feature is based on how mailparser handles attachments.
Setting attachments: true
will download attachments as buffer objects by default to the project directory.
A specific download directory may be specified by setting attachmentOptions: { directory: "attachments/"}
.
Attachments may also be streamed using attachmentOptions: { stream: "true"}
. The "attachment"
event will be fired every time an attachment is encountered.
Refer to the mailparser docs for specifics on how to stream attachments.
License
MIT