コード例 #1
0
  std::vector<long>
  ImapClient::search(const std::string& aHost, 
                     const std::string& aUsername, 
                     const std::string& aPassword, 
                     const std::string& aMailbox, 
                     const std::string& aCriteria, 
                     bool aUid) {
    
#include "linkage.c"
    
    /* IMPORTANT: make sure that the vector of found sequence numbers is empty! */
    theFoundSequenceNumbers.clear();
    
    MAILSTREAM* lSource = getMailStream(aHost, aUsername, aPassword, aMailbox, true);
    checkMailStream(lSource);
    mail_ping(lSource);
    
    
    /* First, tokenize the criteria so that we can work on it */
    std::stringstream lToTokenize(aCriteria);
    std::string lBuffer;
    std::vector<std::string> lTokens;
    
    SEARCHPGM * lSearchProgram;
    while(lToTokenize >> lBuffer) {
      lTokens.push_back(lBuffer);
    }
    lSearchProgram = search_criteria(lTokens);
    
    mail_search_full(lSource, NIL,  lSearchProgram, (aUid ? SE_UID : NIL) | SE_NOPREFETCH); 
    /* clean up, don't leave a mess */
    mail_free_searchpgm(&lSearchProgram); 
    return theFoundSequenceNumbers;
  }
コード例 #2
0
ファイル: ext_imap.cpp プロジェクト: abacaxinho/hhvm
static Variant HHVM_FUNCTION(imap_check, const Resource& imap_stream) {
  ImapStream *obj = imap_stream.getTyped<ImapStream>();
  if (mail_ping(obj->m_stream) == NIL) {
    return false;
  }
  if (obj->m_stream && obj->m_stream->mailbox) {
    Object ret(SystemLib::AllocStdClassObject());
    char date[100];
    rfc822_date(date);
    ret.o_set("Date", String(date, CopyString));
    ret.o_set("Driver", String(obj->m_stream->dtb->name, CopyString));
    ret.o_set("Mailbox", String(obj->m_stream->mailbox, CopyString));
    ret.o_set("Nmsgs", (int64_t)obj->m_stream->nmsgs);
    ret.o_set("Recent", (int64_t)obj->m_stream->recent);
    return ret;
  }
  return false;
}
コード例 #3
0
ファイル: ext_imap.cpp プロジェクト: 2bj/hhvm
bool f_imap_ping(const Resource& imap_stream) {
  ImapStream *obj = imap_stream.getTyped<ImapStream>();
  return mail_ping(obj->m_stream);
}