diff --git a/lib/imap.js b/lib/imap.js index 9850c46..f4054ad 100644 --- a/lib/imap.js +++ b/lib/imap.js @@ -71,7 +71,7 @@ function ImapConnection (options) { keywords: [], permFlags: [], name: null, - messages: { total: 0, new: 0 } + messages: { total: 0, new: 0, unseen: 0 } }, ext: { // Capability-specific state info @@ -412,7 +412,8 @@ ImapConnection.prototype.connect = function(loginCb) { uidvalidity: undefined, messages: { total: undefined, - new: undefined + new: undefined, + unseen: undefined } }; if (m.attributes) { @@ -422,6 +423,9 @@ ImapConnection.prototype.connect = function(loginCb) { case 'RECENT': ret.messages.new = parseInt(m.attributes[++i], 10); break; + case 'UNSEEN': + ret.messages.unseen = parseInt(m.attributes[++i], 10); + break; case 'MESSAGES': ret.messages.total = parseInt(m.attributes[++i], 10); break; @@ -463,7 +467,9 @@ ImapConnection.prototype.connect = function(loginCb) { } else if (/^ALERT$/i.test(code)) self.emit('alert', m[3]); else if (state.status === STATES.BOXSELECTING) { - if (m = /^UIDVALIDITY (\d+)/i.exec(code)) + if (m = /^UNSEEN (\d+)/i.exec(code)) + state.box.messages.unseen = parseInt(m[1], 10); + else if (m = /^UIDVALIDITY (\d+)/i.exec(code)) state.box.uidvalidity = m[1]; else if (m = /^UIDNEXT (\d+)/i.exec(code)) state.box.uidnext = m[1]; @@ -671,7 +677,7 @@ ImapConnection.prototype.status = function(boxName, cb) { var cmd = 'STATUS "'; cmd += utils.escape(boxName); - cmd += '" (MESSAGES RECENT UIDVALIDITY)'; + cmd += '" (MESSAGES RECENT UNSEEN UIDVALIDITY)'; this._send(cmd, cb); }; @@ -1238,6 +1244,7 @@ ImapConnection.prototype._resetBox = function() { this._state.box.name = null; this._state.box.messages.total = 0; this._state.box.messages.new = 0; + this._state.box.messages.unseen = 0; }; ImapConnection.prototype._noop = function() {