/** * Generate MIME compliant message from the current configuration * * If both a text and HTML body are present, generates a * multipart/alternative \Zend\Mime\Part\Part containing the headers and contents * of each. Otherwise, uses whichever of the text or HTML parts present. * * The content part is then prepended to the list of \Zend\Mime\Parts\Parts for * this message. * * @return void */ protected function _buildBody() { if (($text = $this->_mail->getBodyText()) && ($html = $this->_mail->getBodyHtml())) { // Generate unique boundary for multipart/alternative $mime = new Mime\Mime(null); $boundaryLine = $mime->boundaryLine($this->EOL); $boundaryEnd = $mime->mimeEnd($this->EOL); $text->disposition = false; $html->disposition = false; $body = $boundaryLine . $text->getHeaders($this->EOL) . $this->EOL . $text->getContent($this->EOL) . $this->EOL . $boundaryLine . $html->getHeaders($this->EOL) . $this->EOL . $html->getContent($this->EOL) . $this->EOL . $boundaryEnd; $mp = new Mime\Part($body); $mp->type = Mime\Mime::MULTIPART_ALTERNATIVE; $mp->boundary = $mime->boundary(); $this->_isMultipart = true; // Ensure first part contains text alternatives array_unshift($this->_parts, $mp); // Get headers $this->_headers = $this->_mail->getHeaders(); return; } // If not multipart, then get the body if (false !== ($body = $this->_mail->getBodyHtml())) { array_unshift($this->_parts, $body); } elseif (false !== ($body = $this->_mail->getBodyText())) { array_unshift($this->_parts, $body); } if (!$body) { throw new Exception('No body specified'); } // Get headers $this->_headers = $this->_mail->getHeaders(); $headers = $body->getHeadersArray($this->EOL); foreach ($headers as $header) { // Headers in \Zend\Mime\Part\Part are kept as arrays with two elements, a // key and a value $this->_headers[$header[0]] = array($header[1]); } }
public function testGetJustBodyHtml() { $text = "<html><head></head><body><p>Some body text</p></body></html>"; $mail = new Mail\Mail(); $mail->setBodyHtml($text); $this->assertContains('Some body text', $mail->getBodyHtml(true)); }