function drupal_wrap_mail in Drupal 6
Same name and namespace in other branches
- 7 includes/mail.inc \drupal_wrap_mail()
Perform format=flowed soft wrapping for mail (RFC 3676).
We use delsp=yes wrapping, but only break non-spaced languages when absolutely necessary to avoid compatibility issues.
We deliberately use LF rather than CRLF, see drupal_mail().
Parameters
$text: The plain text to process.
$indent (optional): A string to indent the text with. Only '>' characters are repeated on subsequent wrapped lines. Others are replaced by spaces.
2 calls to drupal_wrap_mail()
- drupal_html_to_text in includes/
mail.inc - Transform an HTML string into plain text, preserving the structure of the markup. Useful for preparing the body of a node to be sent by e-mail.
- drupal_mail in includes/
mail.inc - Compose and optionally send an e-mail message.
File
- includes/
mail.inc, line 211
Code
function drupal_wrap_mail($text, $indent = '') {
// Convert CRLF into LF.
$text = str_replace("\r", '', $text);
// See if soft-wrapping is allowed.
$clean_indent = _drupal_html_to_text_clean($indent);
$soft = strpos($clean_indent, ' ') === FALSE;
// Check if the string has line breaks.
if (strpos($text, "\n") !== FALSE) {
// Remove trailing spaces to make existing breaks hard.
$text = preg_replace('/ +\\n/m', "\n", $text);
// Wrap each line at the needed width.
$lines = explode("\n", $text);
array_walk($lines, '_drupal_wrap_mail_line', array(
'soft' => $soft,
'length' => strlen($indent),
));
$text = implode("\n", $lines);
}
else {
// Wrap this line.
_drupal_wrap_mail_line($text, 0, array(
'soft' => $soft,
'length' => strlen($indent),
));
}
// Empty lines with nothing but spaces.
$text = preg_replace('/^ +\\n/m', "\n", $text);
// Space-stuff special lines.
$text = preg_replace('/^(>| |From)/m', ' $1', $text);
// Apply indentation. We only include non-'>' indentation on the first line.
$text = $indent . substr(preg_replace('/^/m', $clean_indent, $text), strlen($indent));
return $text;
}