/**
  * @param Account $account;
  * @param int $messId
  * @param string $messUid
  * @param int $folderId
  * @param string $folderFullName
  * @return GetMessageBase
  */
 function GetMessageBase(&$account, $messId, $messUid, $folderId, $folderFullName, $charset)
 {
     $this->messId = $messId;
     $this->messUid = $messUid;
     $this->folderId = $folderId;
     $this->folderFullName = $folderFullName;
     $this->charset = $charset;
     $this->accountId = $account->Id;
     $this->account =& $account;
     $this->processor = new MailProcessor($this->account);
     $this->folder = new Folder($this->accountId, $folderId, $folderFullName);
     $this->processor->GetFolderInfo($this->folder);
     $msgIdUid = array();
     if (!empty($messId) && !empty($messUid)) {
         $msgIdUid[$messId] = $messUid;
     }
     $charsetNum = -1;
     if ($charset != -1) {
         $GLOBALS[MailInputCharset] = $charset;
         $charsetNum = ConvertUtils::GetCodePageNumber($charset);
     }
     $this->msg =& $this->processor->GetMessage($messId, $messUid, $this->folder);
     if ($this->msg) {
         if (!(($this->msg->Flags & MESSAGEFLAGS_Seen) == MESSAGEFLAGS_Seen)) {
             $this->processor->SetFlag($msgIdUid, $this->folder, MESSAGEFLAGS_Seen, ACTION_Set);
         }
         if ($this->folder->SyncType != FOLDERSYNC_DirectMode && $this->processor->DbStorage->Connect()) {
             $this->processor->DbStorage->UpdateMessageCharset($messId, $charsetNum, $this->msg);
         }
     }
 }
 /**
  * @param int $messId
  * @param string $messUid
  * @param int $folderId
  * @param string $folderFullName
  * @param bool $isFull
  * @return GetMessageBase
  */
 function GetMessageBase(&$account, $messId, $messUid, $folderId, $folderFullName, $charset, $isFull = false)
 {
     $this->messId = $messId;
     $this->messUid = $messUid;
     $this->folderId = $folderId;
     $this->folderFullName = $folderFullName;
     $this->charset = $charset;
     if (isset($_SESSION[ACCOUNT_ID])) {
         $this->accountId = $_SESSION[ACCOUNT_ID];
     }
     if (!isset($_SESSION['attachtempdir'])) {
         $_SESSION['attachtempdir'] = md5(session_id());
     }
     $this->account =& $account;
     $this->processor =& new MailProcessor($this->account);
     $this->folder =& new Folder($this->accountId, $folderId, $folderFullName);
     $this->processor->GetFolderInfo($this->folder);
     $msgIdUid = array();
     if (!empty($messId) && !empty($messUid)) {
         $msgIdUid[$messId] = $messUid;
     }
     $this->processor->SetFlags($msgIdUid, $this->folder, MESSAGEFLAGS_Seen, ACTION_Set);
     if ($charset != -1) {
         $GLOBALS[MailInputCharset] = $charset;
         $charsetNum = ConvertUtils::GetCodePageNumber($charset);
     } else {
         $charsetNum = -1;
     }
     $this->msg =& $this->processor->GetMessage($messId, $messUid, $this->folder);
     if (!$this->msg) {
         return false;
     }
     if ($this->folder->SyncType != FOLDERSYNC_DirectMode && $this->processor->DbStorage->Connect()) {
         $this->processor->DbStorage->UpdateMessageCharset($messId, $charsetNum, $this->msg);
     }
 }
 function DoGetMessage()
 {
     $_dbStorage = $_settings = $_xmlObj = $_xmlRes = $_accountId = null;
     $this->_initFuncArgs($_dbStorage, $_settings, $_xmlObj, $_xmlRes, $_accountId);
     $_account =& CXmlProcessing::AccountCheckAndLoad($_xmlRes, $_accountId, true, false);
     $_charsetNum = $_xmlObj->GetParamValueByName('charset');
     if ($_charsetNum > 0) {
         $_account->DefaultIncCharset = ConvertUtils::GetCodePageName($_charsetNum);
         $GLOBALS[MailInputCharset] = $_account->DefaultIncCharset;
         $_account->UpdateDefaultIncCharset();
     }
     $_processor = new MailProcessor($_account);
     $_folderNodeRequest =& $_xmlObj->XmlRoot->GetChildNodeByTagName('folder');
     $_folder = null;
     if (isset($_folderNodeRequest->Attributes['id'])) {
         $_folder = new Folder($_accountId, $_folderNodeRequest->Attributes['id'], $_folderNodeRequest->GetChildValueByTagName('full_name'));
         $_processor->GetFolderInfo($_folder);
         if (!$_folder || $_folder->IdDb < 1) {
             CXmlProcessing::PrintErrorAndExit(WebMailException, $_xmlRes);
         }
     } else {
         CXmlProcessing::PrintErrorAndExit(WebMailException, $_xmlRes);
     }
     $_msgId = $_xmlObj->GetParamValueByName('id');
     $_msgUid = $_xmlObj->GetParamTagValueByName('uid');
     $_msgSize = $_xmlObj->GetParamValueByName('size');
     $_msgIdUid = array($_msgId => $_msgUid);
     $_mode = (int) $_xmlObj->GetParamValueByName('mode');
     $_modeForGet = $_mode;
     if (empty($_msgSize) || (int) $_msgSize < BODYSTRUCTURE_MGSSIZE_LIMIT || $_folder && FOLDERTYPE_Drafts == $_folder->Type || (($_mode & 8) == 8 || ($_mode & 16) == 16 || ($_mode & 32) == 32 || ($_mode & 64) == 64)) {
         $_modeForGet = null;
     }
     $_message = null;
     $_message =& $_processor->GetMessage($_msgId, $_msgUid, $_folder, $_modeForGet);
     if (null != $_message) {
         if (($_message->Flags & MESSAGEFLAGS_Seen) != MESSAGEFLAGS_Seen) {
             $_processor->SetFlag($_msgIdUid, $_folder, MESSAGEFLAGS_Seen, ACTION_Set);
         }
         $_isFromSave = false;
         if (USE_DB && ($_modeForGet === null || ($_modeForGet & 1) == 1)) {
             $_fromObj = new EmailAddress();
             $_fromObj->Parse($_message->GetFromAsString(true));
             if ($_fromObj->Email) {
                 $_isFromSave = $_processor->DbStorage->SelectSenderSafetyByEmail($_fromObj->Email, $_account->IdUser);
             }
             if ($_folder->SyncType != FOLDERSYNC_DirectMode && $_processor->DbStorage->Connect()) {
                 $_processor->DbStorage->UpdateMessageCharset($_msgId, $_charsetNum, $_message);
             }
         }
         CXmlProcessing::GetMessageNode($_xmlRes, $_message, $_folder, $_processor, $_account, $_settings, $_mode, $_charsetNum, $_isFromSave);
     } else {
         CXmlProcessing::PrintErrorAndExit(getGlobalError(), $_xmlRes);
     }
 }
Exemple #4
0
     $processor->GetFolderInfo($folder);
     if (!$folder || $folder->IdDb < 1) {
         ///!!!!
     }
 } else {
     ///!!!!
 }
 $msgIdUid = array($mes_id => $mes_uid);
 $_messageInfo = new CMessageInfo();
 $_messageInfo->SetInfo($mes_id, $mes_uid, $folder->IdDb, $folder->FullName);
 $modeForGet = $mode;
 if (empty($msgSize) || (int) $msgSize < BODYSTRUCTURE_MGSSIZE_LIMIT || $folder && FOLDERTYPE_Drafts == $folder->Type || (($mode & 8) == 8 || ($mode & 16) == 16 || ($mode & 32) == 32 || ($mode & 64) == 64)) {
     $modeForGet = null;
 }
 $message = null;
 $message =& $processor->GetMessage($mes_id, $mes_uid, $folder, $modeForGet);
 if (null != $message) {
     if (($message->Flags & MESSAGEFLAGS_Seen) != MESSAGEFLAGS_Seen) {
         $processor->SetFlag($msgIdUid, $folder, MESSAGEFLAGS_Seen, ACTION_Set);
     }
     $_isFromSave = false;
     if (USE_DB && ($modeForGet === null || ($modeForGet & 1) == 1)) {
         $_fromObj = new EmailAddress();
         $_fromObj->Parse($message->GetFromAsString(true));
         if ($_fromObj->Email) {
             $_isFromSave = $processor->DbStorage->SelectSenderSafetyByEmail($_fromObj->Email, $account->IdUser);
         }
         if ($folder->SyncType != FOLDERSYNC_DirectMode && $processor->DbStorage->Connect()) {
             $processor->DbStorage->UpdateMessageCharset($mes_id, $mes_charset, $message);
         }
     }
Exemple #5
0
        $tempName = ConvertUtils::ClearFileName($_GET['tn']);
        $tempFiles =& CTempFiles::CreateInstance($account);
        if ($tempFiles->IsFileExist($tempName)) {
            $data = $tempFiles->LoadFile($tempName);
        } else {
            $data = $processor->GetBodyPartByIndex($_GET['bsi'], $_GET['msg_uid'], $folder);
            $encode = 'none';
            if (isset($_GET['bse']) && strlen($data) > 0) {
                $encode = ConvertUtils::GetBodyStructureEncodeString($_GET['bse']);
                $data = ConvertUtils::DecodeBodyByType($data, $encode);
            }
            $tempFiles->SaveFile($tempName, $data);
        }
        AddAttachmentHeaders($account->GetUserCharset(), $tempName);
    } else {
        $message =& $processor->GetMessage($_GET['msg_id'], $_GET['msg_uid'], $folder);
        if (!$message) {
            exit;
        }
        $data = $message->TryToGetOriginalMailMessage();
        $fileNameToSave = trim(ConvertUtils::ClearFileName($message->GetSubject()));
        if (empty($fileNameToSave)) {
            $fileNameToSave = 'message';
        }
        if (ConvertUtils::IsIE()) {
            $fileNameToSave = rawurlencode($fileNameToSave);
        }
        AddFileNameHeaders($account->GetUserCharset(), $fileNameToSave . '.eml');
    }
} else {
    if (isset($_SESSION[ACCOUNT_ID], $_GET['tn'])) {