提交此问题及其答案,因为SA(以及谷歌)对此非常无益。
我需要删除INBOX中的所有邮件。为清晰起见,下面不相关的行被删除:
function openInbox(cb){
imap.openBox('INBOX', true, cb);
}
imap.once('ready', function() {
openInbox(function(err,box){
if (err) throw err;
var f = imap.seq.fetch('1:*', {
bodies: 'HEADER.FIELDS (FROM)',
struct: true
});
f.on('message', function(msg, seqno){
console.log('Message #%d', seqno);
imap.seq.addFlags(seqno, 'Deleted', function(err){
console.log(err);
});
});
f.once('end', function(){
imap.end();
});
});
});
imap.connect();
这一切看起来都不错,当我用console.log查看它时,我看到它正在阅读电子邮件就好了。一切看起来都应该是好的,但我明白了:
{ [Error: Command received in Invalid state.] textCode: undefined, source: 'protocol' }
答案 0 :(得分:2)
问题是您是否以只读模式打开了INBOX。这就是第二个论点中的“真实”:
function openInbox(cb){
imap.openBox('INBOX', true, cb);
}
将其更改为
function openInbox(cb){
imap.openBox('INBOX', false, cb);
}
突然之间一切都会奏效。