2016-10-11 4 views
1

SA (그리고 Google 관련 문제)가이 문제에 대해 매우 도움이되지 않아서이 질문과 답변을 제출했습니다.플래그를 업데이트하려고 시도하는 노드 imap : 오류 : 명령이 잘못된 상태로 수신되었습니다.

내받은 편지함에있는 모든 메시지를 삭제해야합니다. 선명도 컷 아래 무관 라인 :

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

메시지를 삭제 된 것으로 표시하려는 경우 플래그의 이름은 \ Deleted (또는 \\ Deleted with escaping)입니다. – Max

답변

2

문제는 읽기 전용 모드에서 INBOX를 연됩니다. 그건 바로 여기에 두 번째 인수에서 '사실'이다 :

function openInbox(cb){ 
    imap.openBox('INBOX', true, cb); 
} 

변경이

function openInbox(cb){ 
    imap.openBox('INBOX', false, cb); 
} 

에 갑자기는거야 모든 일을.