/** * View specific email * */ function view() { $this->addHelper('textile'); $email = MailContents::findById(get_id()); if (!$email instanceof MailContent) { flash_error(lang('email dnx')); ajx_current("empty"); return; } if ($email->getIsDeleted()) { flash_error(lang('email dnx deleted')); ajx_current("empty"); return; } if (!$email->canView(logged_user())) { flash_error(lang('no access permissions')); ajx_current("empty"); return; } tpl_assign('email', $email); $additional_body = ""; $attachments = array(); if ($email->getState() >= 200) { $old_memory_limit = ini_get('memory_limit'); if (php_config_value_to_bytes($old_memory_limit) < 256 * 1024 * 1024) { ini_set('memory_limit', '256M'); } $attachments = self::readAttachmentsFromFileSystem($email, $att_ver); if ($attachments && is_array($attachments)) { foreach ($attachments as &$attach) { if ($att_ver < 2) { $attach["FileName"] = $attach['name']; $attach['size'] = format_filesize(strlen($attach["data"])); unset($attach['name']); unset($attach['data']); } else { $attach["FileName"] = $attach['name']; $attach['size'] = format_filesize(filesize($attach["path"])); unset($attach['name']); } } } else { } ini_set('memory_limit', $old_memory_limit); } else { MailUtilities::parseMail($email->getContent(), $decoded, $parsedEmail, $warnings); if (isset($parsedEmail['Attachments'])) { $attachments = $parsedEmail['Attachments']; } else { if ($email->getHasAttachments() && !in_array($parsedEmail['Type'], array('html', 'text', 'delivery-status')) && isset($parsedEmail['FileName'])) { // the email is the attachment $attach = array('Data' => $parsedEmail['Data'], 'Type' => $parsedEmail['Type'], 'FileName' => $parsedEmail['FileName']); $attachments = array($attach); } } $to_remove = array(); foreach ($attachments as $k => &$attach) { // dont show inline images in attachments box if (array_var($attach, 'FileDisposition') == 'inline' && array_var($parsedEmail, 'Type') == 'html') { $attach['hide'] = true; } if (array_var($attach, 'Type') == 'html') { $attach_tmp = $attach['Data']; $attach_tmp = preg_replace('/<html[^>]*[>]/', '', $attach_tmp); $attach_tmp = preg_replace('/<\\/html>/', '', $attach_tmp); $attach_tmp = preg_replace('/<head>*<\\/head>/', '', $attach_tmp); $attach_tmp = preg_replace('/<body[^>]*[>]/', '', $attach_tmp); $attach_tmp = preg_replace('/<\\/body>/', '', $attach_tmp); $additional_body .= $attach_tmp; //break; } $attach['size'] = format_filesize(strlen($attach["Data"])); unset($attach['Data']); } } if ($email->getBodyHtml() != '') { $tmp_folder = "/tmp/" . $email->getAccountId() . "_" . logged_user()->getId() . "_" . $email->getId() . "_temp_mail_content_res"; if (is_dir(ROOT . $tmp_folder)) { remove_dir(ROOT . $tmp_folder); } $parts_array = array_var($decoded, 0, array('Parts' => '')); $email->setBodyHtml(self::rebuild_body_html($email->getBodyHtml(), array_var($parts_array, 'Parts'), $tmp_folder) . $additional_body); } tpl_assign('attachments', $attachments); ajx_extra_data(array("title" => $email->getSubject(), 'icon' => 'ico-email')); ajx_set_no_toolbar(true); if (array_var($_GET, 'replace')) { ajx_replace(true); } if (!$email->getIsRead(logged_user()->getId())) { $object_controler = new ObjectController(); $object_controler->do_mark_as_read_unread_objects(array($email->getId()), true); } ApplicationReadLogs::createLog($email, null, ApplicationReadLogs::ACTION_READ); }