You are here

protected function SmtpMailSystem::_remove_headers in SMTP Authentication Support 7

Same name and namespace in other branches
  1. 7.2 smtp.mail.inc \SmtpMailSystem::_remove_headers()

Strips the headers from the body part.

Parameters

input: A string containing the body part to strip.

Return value

A string with the stripped body part.

1 call to SmtpMailSystem::_remove_headers()
SmtpMailSystem::mailWithoutQueue in ./smtp.mail.inc

File

./smtp.mail.inc, line 727
The code processing mail in the smtp module.

Class

SmtpMailSystem
Modify the drupal mail system to use smtp when sending emails. Include the option to choose between plain text or HTML

Code

protected function _remove_headers($input) {
  $part_array = explode("\n", $input);

  // will strip these headers according to RFC2045
  $headers_to_strip = array(
    'Content-Type',
    'Content-Transfer-Encoding',
    'Content-ID',
    'Content-Disposition',
  );
  $pattern = '/^(' . implode('|', $headers_to_strip) . '):/';
  while (count($part_array) > 0) {

    // ignore trailing spaces/newlines
    $line = rtrim($part_array[0]);

    // if the line starts with a known header string
    if (preg_match($pattern, $line)) {
      $line = rtrim(array_shift($part_array));

      // remove line containing matched header.
      // if line ends in a ';' and the next line starts with four spaces, it's a continuation
      // of the header split onto the next line. Continue removing lines while we have this condition.
      while (substr($line, -1) == ';' && count($part_array) > 0 && substr($part_array[0], 0, 4) == '    ') {
        $line = rtrim(array_shift($part_array));
      }
    }
    else {

      // no match header, must be past headers; stop searching.
      break;
    }
  }
  $output = implode("\n", $part_array);
  return $output;
}