UNPKG

node-imap

Version:

A fork of the famous and outdated IMAP module for node.js that makes communicating with IMAP servers easy

92 lines (88 loc) 2.19 kB
var assert = require('assert'), net = require('net'), Imap = require('../lib/Connection'), result var CRLF = '\r\n' var RESPONSES = [ ['* CAPABILITY IMAP4rev1 UNSELECT IDLE NAMESPACE QUOTA CHILDREN', 'A0 OK Thats all she wrote!', '' ].join(CRLF), ['* CAPABILITY IMAP4rev1 UNSELECT IDLE NAMESPACE QUOTA CHILDREN UIDPLUS MOVE', 'A1 OK authenticated (Success)', '' ].join(CRLF), ['* NAMESPACE (("" "/")) NIL NIL', 'A2 OK Success', '' ].join(CRLF), ['* LIST (\\Noselect) "/" "/"', 'A3 OK Success', '' ].join(CRLF), ['* FLAGS (\\Answered \\Flagged \\Draft \\Deleted \\Seen)', '* OK [PERMANENTFLAGS ()] Flags permitted.', '* OK [UIDVALIDITY 2] UIDs valid.', '* 685 EXISTS', '* 0 RECENT', '* OK [UIDNEXT 4422] Predicted next UID.', 'A4 OK [READ-ONLY] INBOX selected. (Success)', '' ].join(CRLF), ['* 1 FETCH (UID 1)', '* 1 FETCH (INTERNALDATE "05-Sep-2004 00:38:03 +0000" UID 1000)', '* 1 FETCH (FLAGS (\\Seen))', 'A5 OK Success', '' ].join(CRLF), ['* BYE LOGOUT Requested', 'A6 OK good day (Success)', '' ].join(CRLF) ] const srv = net.createServer(function (sock) { sock.write('* OK asdf\r\n') var buf = '', lines sock.on('data', function (data) { buf += data.toString('utf8') if (buf.indexOf(CRLF) > -1) { lines = buf.split(CRLF) buf = lines.pop() lines.forEach(function () { sock.write(RESPONSES.shift()) }) } }) }) srv.listen(0, '127.0.0.1', function () { var port = srv.address().port var imap = new Imap({ user: 'foo', password: 'bar', host: '127.0.0.1', port: port, keepalive: false }) imap.on('ready', function () { imap.openBox('INBOX', true, function () { var f = imap.seq.fetch(1) f.on('message', function (m) { m.once('attributes', function (attrs) { result = attrs }) }) f.on('end', function () { srv.close() imap.end() }) }) }) imap.connect() }) process.once('exit', function () { assert.deepEqual(result, { uid: 1, date: new Date('05-Sep-2004 00:38:03 +0000'), flags: ['\\Seen'] }) })