Overview
Updated Mail-listener2 library for node.js. Get notification when new email arrived to inbox or when message metadata (e.g. flags) changes externally. Uses IMAP protocol.
Updated Mail-listener2 includes changes and improvements from another forks.
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-listener.
Use
Install
npm install mail-listener2-updated
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 markSeen: true // all fetched email willbe marked as seen and not fetched next time 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; 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