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("&ndash; %s (<em>%s</em>)", $filename, $attPart->{'content-type'}) . '<br />';
             }
         }
     }
     $attachTitle = ___('Attachments');
     return $headersRendered . '<br />' . $bodyRendered . ($atRendered ? '<br /><strong>' . $attachTitle . '</strong>:<br />' . $atRendered : '');
 }
Esempio n. 2
0
 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) {
     }
 }