예제 #1
0
 /**
  * @return EmailAddress
  */
 function &GetFrom()
 {
     $emailAdress = new EmailAddress();
     $emailAdress->Parse($this->Headers->GetHeaderDecodedValueByName(MIMEConst_FromLower));
     return $emailAdress;
 }
예제 #2
0
 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);
     }
 }
예제 #3
0
     $GLOBALS[MailInputCharset] = $account->DefaultIncCharset;
     $account->Update();
 }
 $processor =& new MailProcessor($account);
 $folderNodeRequest =& $xmlObj->XmlRoot->GetChildNodeByTagName('folder');
 $folder =& new Folder($accountId, $folderNodeRequest->Attributes['id'], $folderNodeRequest->GetChildValueByTagName('full_name'));
 $processor->GetFolderInfo($folder);
 $msgId = $xmlObj->GetParamValueByName('id');
 $msgUid = $xmlObj->GetParamTagValueByName('uid');
 $msgIdUid = array();
 $msgIdUid[$msgId] = $msgUid;
 $processor->SetFlags($msgIdUid, $folder, MESSAGEFLAGS_Seen, ACTION_Set);
 $message =& $processor->GetMessage($msgId, $msgUid, $folder);
 if ($message != null) {
     $fromObj = new EmailAddress();
     $fromObj->Parse($message->GetFromAsString(true));
     $isFromSave = false;
     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);
     }
     $mode = (int) $xmlObj->GetParamValueByName('mode');
     $messageNode =& new XmlDomNode('message');
     $messageClassType = $message->TextBodies->ClassType();
     $messageNode->AppendAttribute('id', $xmlObj->GetParamValueByName('id'));
     $messageNode->AppendAttribute('html', (int) (($messageClassType & 2) == 2));
     $messageNode->AppendAttribute('plain', (int) (($messageClassType & 1) == 1));
     $messageNode->AppendAttribute('importance', $message->GetPriorityStatus());
     $messageNode->AppendAttribute('mode', $mode);
 /**
  * Adds the specified full e-mail address (including display name if any) to the collection.
  * @param string $address
  */
 function AddFromString($address)
 {
     $this->AddEmailAddress(EmailAddress::Parse($address, $this->_header));
 }