function renderMail($obj, $controller, $field, Am_Grid_Field_Expandable $fieldObj) { $_body = $obj->body; $atRendered = null; $headersRendered = ''; foreach (unserialize($obj->headers) as $headerName => $headerVal) { if (isset($headerVal['append'])) { unset($headerVal['append']); $headerVal = implode(',' . "\r\n" . ' ', $headerVal); } else { $headerVal = implode("\r\n", $headerVal); } $_headers[strtolower($headerName)] = $headerVal; if (strpos($headerVal, '=?') === 0) { $headerVal = mb_decode_mimeheader($headerVal); } $headersRendered .= '<strong>' . $headerName . '</strong>: <em>' . nl2br(Am_Controller::escape($headerVal)) . '</em><br />'; } $part = new Zend_Mail_Part(array('headers' => $_headers, 'content' => $_body)); $canHasAttacments = false; list($type) = explode(";", $part->getHeader('content-type')); if ($type == 'multipart/alternative') { $msgPart = $part->getPart(2); } else { $msgPart = $part->isMultipart() ? $part->getPart(1) : $part; if ($msgPart->isMultipart()) { $msgPart = $msgPart->getPart(2); //html part } $canHasAttacments = true; } list($type) = explode(";", $msgPart->getHeader('content-type')); $encoding = $msgPart->getHeader('content-transfer-encoding'); $content = $msgPart->getContent(); if ($encoding && $encoding == 'quoted-printable') { $content = quoted_printable_decode($content); } else { $content = base64_decode($content); } switch ($type) { case 'text/plain': $bodyRendered = nl2br(Am_Controller::escape($content)); break; case 'text/html': $content = preg_replace('#^.*<body.*?>#mi', '', $content); $content = preg_replace('#</body>.*$#mi', '', $content); $bodyRendered = $content; break; } //attachments $atRendered = ''; if ($canHasAttacments) { if ($part->isMultipart()) { for ($i = 2; $i <= $part->countParts(); $i++) { $attPart = $part->getPart($i); preg_match('/filename="(.*)"/', $attPart->{'content-disposition'}, $matches); $filename = @$matches[1]; $atRendered .= sprintf("– %s (<em>%s</em>)", $filename, $attPart->{'content-type'}) . '<br />'; } } } $attachTitle = ___('Attachments'); return $headersRendered . '<br />' . $bodyRendered . ($atRendered ? '<br /><strong>' . $attachTitle . '</strong>:<br />' . $atRendered : ''); }
protected function _extractHeaderToParams(Zend_Mail_Part $part, $header_name, &$params, $is_array = true) { try { $header_content = $part->getHeader($header_name, 'string'); $param_name = str_replace('-', '', $header_name); foreach (array_filter(array_map('trim', explode(',', $header_content))) as $header_content_line) { if (preg_match('/(.*)<(.*)>/', $header_content_line, $m)) { $email = trim($m[2]); $name = trim($m[1]); } else { $email = trim($header_content_line); $name = ''; } if ($is_array) { $params[$param_name][] = $email; $params[$param_name . 'name'][] = $name; } else { $params[$param_name] = $email; $params[$param_name . 'name'] = $name; } } } catch (Exception $e) { } }