2014-02-25 44 views
0

我使用優秀的inbox node.js庫和某些電子郵件帳戶我沒有看到一些默認郵箱,如「發送郵件」。我非常使用OAUTH2原樣使用示例代碼;缺少默認的「發送郵件」IMAP文件夾

client = inbox.createConnection(false, "imap.gmail.com", { 
    secureConnection: true, 
    auth: { 
     XOAuth2: { 
      user: account.email, 
      clientId: Settings.googleApp.clientId, 
      clientSecret: Settings.googleApp.secretId, 
      refreshToken: refreshToken, 
      accessToken: accessToken, 
      timeout: expires 
     } 
    } 
}); 

client.connect(); 

client.on("connect", function() { 

    Logger.debug("Opening mailbox " + mailbox); 

    self.getMailboxes(function(err, boxes){ 
     var boxNames = _.pluck(boxes, 'name'); 
     Logger.info(boxNames); 
    }); 
} 

我有點難倒....

+0

郵箱位於[Gmail]層級,可能已本地化。在英文中,它被稱爲「[Gmail] /發送郵件」 – Max

+1

簡要瀏覽收件箱文檔後,我會冒險猜測您想查看郵箱類型。找到正確類型的郵箱。什麼是正確的類型?那麼,也許圖書館是優秀的,但該文檔不是;) – arnt

+0

謝謝,我發現「[Gmail] /發送郵件」文件夾,這是我認爲的「所有郵件」的子郵箱。我只是認爲IMAP規範指定了「已發送郵件」的默認郵箱應該存在,並且它對於某些Gmail帳戶的確很陌生,但並非全部。 –

回答

0

感謝,所以我最終使用的類型(Type =「已發送」),並通過所有的子郵箱迭代拉出所有已發郵箱,它允許郵箱的語言環境特定名稱。這是代碼;

 client.listMailboxes(function(error, mailboxes){ 

      var _findSent = function(mailbox, callback){ 

       if(mailbox.hasChildren){ 

        mailbox.listChildren(function(error, children){ 

         var sent = []; 

         for(var i=0; i < children.length; i++){ 

          if (children[i].type == 'Sent'){ 
           sent.push(children[i]); 
          } 
         } 

         callback(null, sent); 

        }); 

       } 
       else { 

        var sent = []; 

        if (mailbox.type == 'Sent'){ 
         sent.push(mailbox); 
        } 

        callback(null, sent); 
       } 

      } 


      async.map(mailboxes, _findSent, function(err, results){ 
       onGotSentMailboxes(_.flatten(results)); 
      }); 

     }); 
相關問題