class HTMLMailMailSystem in HTML Mail 7
@file Implementation of MailSystemInterface.
Hierarchy
- class \HTMLMailMailSystem implements MailSystemInterface
Expanded class hierarchy of HTMLMailMailSystem
See also
http://api.drupal.org/api/drupal/includes--mail.inc/interface/MailSystem...
2 string references to 'HTMLMailMailSystem'
- htmlmail_disable in ./
htmlmail.install - Implements hook_disable().
- htmlmail_enable in ./
htmlmail.install - Implements hook_enable().
File
- ./
htmlmail.mail.inc, line 8 - Implementation of MailSystemInterface.
View source
class HTMLMailMailSystem implements MailSystemInterface {
/**
* Format emails according to module settings.
*/
public function format(array $message) {
// Collapse the message body array.
$message['body'] = is_array($message['body']) ? implode("\n\n", $message['body']) : $message['body'];
// Optionally apply an input filter.
if (isset($message['format']) && ($filter = $message['format']) || ($filter = variable_get('htmlmail_prefilter'))) {
$message['body'] = check_markup($message['body'], $filter);
}
// Use the theme template to add header, footer and optional debug text.
$message['body'] = theme('htmlmail', $message);
// Store a plaintext version.
$message['plaintext'] = drupal_html_to_text($message['body']);
// Send plaintext-only if the recipient prefers it.
$recipient = user_load_by_mail($message['to']);
if ($recipient && !empty($recipient->data['htmlmail_plaintext'])) {
$message['headers']['Content-Type'] = 'text/plain; charset=UTF-8; format=flowed';
$message['body'] = $message['plaintext'];
return $message;
}
// Optionally apply the selected theme via internal http request.
if ($theme = htmlmail_get_selected_theme($message['theme'])) {
$url = url('admin/config/system/htmlmail/email', array(
'absolute' => TRUE,
));
$data = 'body=' . rawurlencode($message['body']) . '&subject=' . rawurlencode($message['subject']) . '&theme=' . rawurlencode($theme);
$options = array(
'method' => 'POST',
'data' => $data,
'headers' => array(
'Content-Type' => 'application/x-www-form-urlencoded',
),
);
$response = drupal_http_request($url, $options);
// Strip javascript as it doesn't work through email anyway.
$message['body'] = preg_replace('@<script type="text/javascript".*</script>@Usi', '', $response->data);
}
// Optionally apply the selected output filter.
if ($filter = variable_get('htmlmail_postfilter')) {
$message['body'] = check_markup($message['body'], $filter);
}
// Store both plaintext and html versions.
$boundary = uniqid(time(), 1);
$message['headers']['Content-Type'] = "multipart/alternative; charset=utf-8; boundary=\"{$boundary}\"";
$message['headers']['Content-Transfer-Encoding'] = '8bit';
$message['headers']['MIME-Version'] = '1.0';
$message['body'] = "This is a multi-part message in MIME format.\n--{$boundary}\nContent-Type: text/plain; charset=utf-8; format=flowed\nContent-Transfer-Encoding: 8bit\n\n" . $message['plaintext'] . "\n\n--{$boundary}\nContent-Type: text/html; charset=UTF-8; format=flowed\nContent-Transfer-Encoding: 8bit\n\n" . $message['body'] . "\n\n--{$boundary}--\n";
return $message;
}
/**
* Send an email message.
*/
public function mail(array $message) {
$mimeheaders = array();
foreach ($message['headers'] as $name => $value) {
$mimeheaders[] = $name . ': ' . mime_header_encode($value);
}
if (isset($message['headers']['Return-Path']) && !ini_get('safe_mode') && !strpos(ini_get('sendmail_path'), ' -f')) {
$extra = '-f ' . $message['headers']['Return-Path'];
}
else {
$extra = '';
}
// To override this, adjust $conf['mail_line_endings'] in settings.php.
$line_endings = variable_get('mail_line_endings', MAIL_LINE_ENDINGS);
return mail($message['to'], str_replace("\n", ' ', mime_header_encode($message['subject'])), preg_replace('@\\r?\\n@', $line_endings, $message['body']), join("\n", $mimeheaders), $extra);
}
}
Members
Name | Modifiers | Type | Description | Overrides |
---|---|---|---|---|
HTMLMailMailSystem:: |
public | function |
Format emails according to module settings. Overrides MailSystemInterface:: |
|
HTMLMailMailSystem:: |
public | function |
Send an email message. Overrides MailSystemInterface:: |