/** * @param string $messageUid * @param bool $indexAsUid * @param Folder $folder * @return WebMailMessage */ function LoadMessage($messageUid, $indexAsUid, &$folder, $mode = null) { $msg = null; if ($indexAsUid && $this->_imapMail->open_mailbox($folder->FullName, false)) { if (null !== $mode) { $bodyStructureObject = $this->_imapMail->getMessageBodyStructure($messageUid); if ($bodyStructureObject && $bodyStructureObject->GetSize() > BODYSTRUCTURE_MGSSIZE_LIMIT) { $this->_imapMail->FillBodyStructureByMode($messageUid, $mode, $bodyStructureObject); $msg = new WebMailMessage(); $msg->FillByBodyStructure($bodyStructureObject, $this->Account->GetDefaultIncCharset()); $msg->Uid = $messageUid; $msg->Size = $bodyStructureObject->GetSize(); $this->_setMessageFlags($msg, $bodyStructureObject->GetFlags()); } } if (null === $msg) { $responseArray = $this->_imapMail->getMessageWithFlag($messageUid); if ($responseArray && count($responseArray) == 2) { $msg = new WebMailMessage(); $msg->LoadMessageFromRawBody($responseArray[0], true); $msg->Uid = $messageUid; $msg->Size = strlen($responseArray[0]); $this->_setMessageFlags($msg, $responseArray[1]); } else { setGlobalError(PROC_MSG_HAS_DELETED); } } } return $msg; }