/** * @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); } } } }
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); }
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()) {