Exemple #1
0
 /**
  * @param int $len[optional] = 0
  * @return string
  */
 function GetBinaryBody($len = 0)
 {
     $body = $this->_body;
     $bodyLen = strlen($body);
     if ($bodyLen == 0) {
         return '';
     }
     if (!isset($GLOBALS[MIMEConst_DoNotUseMTrim]) && $len > 0 && $bodyLen > $len) {
         $body = substr($body, 0, $len);
         $GLOBALS[MIMEConst_IsBodyTrim] = true;
     }
     $dtype = strtolower($this->Headers->GetHeaderValueByName(MIMEConst_ContentTransferEncodingLower));
     return ConvertUtils::DecodeBodyByType($body, $dtype);
 }
 /**
  * @param CBodyStructureObject $bodyStructureObject
  */
 function FillByBodyStructure(&$bodyStructureObject, $defaulAccountEncode = null)
 {
     $gCharset = null;
     $oHeaders = $bodyStructureObject->GetFullHeaders();
     if (!empty($oHeaders)) {
         $this->OriginalHeaders = $oHeaders;
         $this->Headers->Parse($oHeaders);
     }
     $this->TextBodies->BodyStructureType = $bodyStructureObject->ClassType();
     $this->Size = $bodyStructureObject->GetSize();
     $bodyPartsArray = array();
     $bodyPartsArray =& $bodyStructureObject->GetBodyPartsAsArray();
     if (count($bodyPartsArray) > 0) {
         foreach ($bodyPartsArray as $key => $variable) {
             $encode = '';
             $charset = null !== $defaulAccountEncode ? $defaulAccountEncode : CPAGE_UTF8;
             $part = $bodyStructureObject->GetPartByKey($key);
             if ($part) {
                 $part_charset = CBodyStructureParser::GetCharsetFromPart($part);
                 $part_encode = CBodyStructureParser::GetEncodeFromPart($part);
                 if (strlen($part_charset) > 0) {
                     $charset = $part_charset;
                     $gCharset = null === $gCharset ? $part_charset : $gCharset;
                     $this->TextBodies->SetTextCharset($charset);
                     $this->HasCharset = true;
                 }
                 if (strlen($part_encode) > 0) {
                     $encode = $part_encode;
                 }
                 if (strlen($encode) > 0) {
                     $variable = ConvertUtils::DecodeBodyByType($variable, $encode);
                 }
                 $variable = ConvertUtils::ConvertEncoding($variable, $charset, $GLOBALS[MailOutputCharset]);
                 $len = MIMEConst_TrimBodyLen_Bytes;
                 if (!isset($GLOBALS[MIMEConst_DoNotUseMTrim]) && $len > 0 && strlen($variable) > $len) {
                     $variable = substr($variable, 0, $len);
                     $GLOBALS[MIMEConst_IsBodyTrim] = true;
                 }
                 $type = CBodyStructureParser::GetBodyStructurePartType($part);
                 switch ($type) {
                     case BODYSTRUCTURE_TYPE_TEXT_PLAIN:
                         $this->TextBodies->PlainTextBodyPart .= str_replace("\n", CRLF, str_replace("\r", '', ConvertUtils::WMBackHtmlNewCode($variable)));
                         break;
                     case BODYSTRUCTURE_TYPE_TEXT_HTML:
                         $this->TextBodies->HtmlTextBodyPart .= str_replace("\n", CRLF, str_replace("\r", '', ConvertUtils::WMBackHtmlNewCode($variable)));
                         break;
                 }
             }
         }
     }
     $attachmentsIndexs = array();
     $attachmentsIndexs =& $bodyStructureObject->GetAttachmentIndexs();
     if (count($attachmentsIndexs) > 0) {
         foreach ($attachmentsIndexs as $idx) {
             $part = $bodyStructureObject->GetPartByKey($idx);
             if ($part) {
                 $part_name = CBodyStructureParser::GetNameFromPart($part);
                 if (empty($part_name)) {
                     $part_name = CBodyStructureParser::GetFileNameFromPart($part);
                 }
                 if (empty($part_name)) {
                     $part_name = CBodyStructureParser::GetNullNameByType($part);
                 }
                 if ($gCharset !== null && !ConvertUtils::IsLatin($part_name)) {
                     $part_name = ConvertUtils::ConvertEncoding($part_name, $gCharset, CPAGE_UTF8);
                 }
                 $size = 0;
                 if (!empty($part_name)) {
                     $size = CBodyStructureParser::GetSizeFromPart($part);
                 }
                 $part_encode = CBodyStructureParser::GetEncodeFromPart($part);
                 $part_contentId = CBodyStructureParser::GetContentIdFromPart($part);
                 if (!$part_contentId) {
                     $part_contentId = null;
                 }
                 $this->Attachments->AddFromBodyStructure($part_name, $idx, $size, $part_encode, $part_contentId);
             }
         }
     }
 }
Exemple #3
0
 if ($tempNameFromGet) {
     $tempFiles =& CTempFiles::CreateInstance($account);
     $GLOBALS[MailDefaultCharset] = $account->GetDefaultIncCharset();
     $GLOBALS[MailOutputCharset] = $account->GetUserCharset();
     $message = $messageBody = null;
     if ($tempFiles->IsFileExist($tempNameFromGet)) {
         $messageBody = $tempFiles->LoadFile($tempNameFromGet);
     } else {
         if (isset($_GET['bsi'])) {
             $processor = new MailProcessor($account);
             $folder = new Folder($account->Id, $folder_id, $folder_name);
             $messageBody = $processor->GetBodyPartByIndex($_GET['bsi'], $mes_uid, $folder);
             $encode = 'base64';
             if (isset($_GET['bse']) && strlen($messageBody) > 0) {
                 $encode = ConvertUtils::GetBodyStructureEncodeString($_GET['bse']);
                 $messageBody = ConvertUtils::DecodeBodyByType($messageBody, $encode);
             }
             $tempFiles->SaveFile($tempNameFromGet, $messageBody);
         }
     }
     if ($messageBody) {
         $message = new WebMailMessage();
         $message->LoadMessageFromRawBody($messageBody, true);
     }
     if ($message) {
         $isNull = false;
     }
 }
 if ($isNull) {
     exit(PROC_MSG_HAS_DELETED);
 }
Exemple #4
0
     if (!USE_DB) {
         $folder->SyncType = FOLDERSYNC_DirectMode;
     }
 }
 $processor = new MailProcessor($account);
 if (isset($_GET['bsi'], $_GET['tn'])) {
     $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()) {