예제 #1
0
 /**
  * @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;
 }