public function HTMLMailSystem::formatMailMime in HTML Mail 8
Same name and namespace in other branches
- 8.3 src/Plugin/Mail/HtmlMailSystem.php \Drupal\htmlmail\Plugin\Mail\HtmlMailSystem::formatMailMime()
Use the MailMime class to format the message body.
See also
http://drupal.org/project/mailmime
1 call to HTMLMailSystem::formatMailMime()
- HTMLMailSystem::format in src/Plugin/ Mail/ HTMLMailSystem.php 
- Format emails according to module settings.
File
- src/Plugin/ Mail/ HTMLMailSystem.php, line 422 
Class
- HTMLMailSystem
- Modify the Drupal mail system to use HTMLMail when sending emails.
Namespace
Drupal\htmlmail\Plugin\MailCode
public function formatMailMime(array &$message) {
  $eol = $this->siteSettings
    ->get('mail_line_endings', PHP_EOL);
  $message['body'] = HTMLMailMime::concat($message['body'], $eol);
  // Build a full email message string.
  $email = HTMLMailMime::encodeEmail($message['headers'], $message['body'], $eol);
  // Parse it into MIME parts.
  if (!($mime = HTMLMailMime::parse($email, $this->logger, $this->mimeType, $this->fileSystem))) {
    $this
      ->getLogger()
      ->error('Could not parse email message.');
    return $message;
  }
  // Work on a copy so that the original $message['body'] remains unchanged.
  $email = $message;
  if (!($email['body'] = $mime
    ->getHtmlBody()) && !($email['body'] = $mime
    ->getTxtBody())) {
    $email['body'] = '';
  }
  else {
    // Wrap formatted plaintext in <pre> tags.
    if ($email['body'] === strip_tags($email['body']) && preg_match('/.' . $eol . './', $email['body'])) {
      // In condition:
      // No html tags.
      // At least one embedded newline.
      $email['body'] = '<pre>' . $email['body'] . '</pre>';
    }
  }
  // Theme with htmlmail.html.twig.
  $theme = [
    '#theme' => HtmlMailHelper::getThemeNames($message),
    '#message' => $email,
  ];
  $body = $this->renderer
    ->render($theme);
  $mime
    ->setHtmlBody($body);
  $mime
    ->setTxtBody(MailFormatHelper::htmlToText($body));
  $message['MailMIME'] =& $mime;
  return $body;
}