bool IMAPCommandSEARCH::MatchesTEXTCriteria_(const String &fileName, std::shared_ptr<Message> pMessage, std::shared_ptr<IMAPSearchCriteria> pCriteria) { if (!message_data_) { message_data_ = std::shared_ptr<MessageData>(new MessageData()); message_data_->LoadFromMessage(fileName, pMessage); } String sHeader = message_data_->GetHeader(); String sBody = message_data_->GetBody(); String sTextToFind = pCriteria->GetText(); if (pCriteria->GetPositive()) { if (!sHeader.ContainsNoCase(sTextToFind) && !sBody.ContainsNoCase(sTextToFind)) return false; } else { if (sHeader.ContainsNoCase(sTextToFind) || sBody.ContainsNoCase(sTextToFind)) return false; } return true; }
bool IMAPCommandSEARCH::MatchesHeaderCriteria_(const String &fileName, std::shared_ptr<Message> pMessage, std::shared_ptr<IMAPSearchCriteria> pCriteria) { String sHeaderField = pCriteria->GetHeaderField(); String sTextToFind = pCriteria->GetText(); String sHeaderFieldValue = GetHeaderValue_(fileName, pMessage, sHeaderField); if (sHeaderFieldValue.ContainsNoCase(sTextToFind)) return pCriteria->GetPositive(); else return !pCriteria->GetPositive(); }
bool IMAPCommandSEARCH::MatchesBODYCriteria_(const String &fileName, std::shared_ptr<Message> pMessage, std::shared_ptr<IMAPSearchCriteria> pCriteria) { if (!message_data_) { message_data_ = std::shared_ptr<MessageData>(new MessageData()); message_data_->LoadFromMessage(fileName, pMessage); } String sBody = message_data_->GetBody(); String sHTMLBody = message_data_->GetHTMLBody(); String sTextToSearchIn = sBody + sHTMLBody; String sTextToFind = pCriteria->GetText(); if (sTextToSearchIn.ContainsNoCase(sTextToFind)) return pCriteria->GetPositive(); else return !pCriteria->GetPositive(); }