View source
<?php
require_once drupal_get_path('module', 'phpmailer') . '/includes/phpmailer.class.inc';
function phpmailer_send($to, $subject, $body, $from, $headers) {
static $mail;
if (!isset($mail)) {
$mail = new DrupalPHPMailer();
}
try {
if (!$from) {
$from = variable_get('site_mail', ini_get('sendmail_from'));
}
$address = phpmailer_parse_address($from);
$mail->From = $address[0]['mail'];
if ($address[0]['name'] != '') {
$mail->FromName = $address[0]['name'];
}
unset($headers['From']);
if (variable_get('phpmailer_debug_email', '') === '') {
foreach (phpmailer_parse_address($to) as $address) {
$mail
->AddAddress($address['mail'], $address['name']);
}
if (isset($headers['CC'])) {
foreach (phpmailer_parse_address($headers['CC']) as $address) {
$mail
->AddCC($address['mail'], $address['name']);
}
}
if (isset($headers['BCC'])) {
foreach (phpmailer_parse_address($headers['BCC']) as $address) {
$mail
->AddBCC($address['mail'], $address['name']);
}
}
}
else {
$mail
->AddAddress(variable_get('phpmailer_debug_email', ''));
}
unset($headers['CC'], $headers['BCC']);
if (isset($headers['Reply-To'])) {
foreach (phpmailer_parse_address($headers['Reply-To']) as $address) {
$mail
->AddReplyTo($address['mail'], $address['name']);
}
unset($headers['Reply-To']);
}
if (isset($headers['Content-Type'])) {
$content_type = explode(';', $headers['Content-Type']);
$mail->ContentType = trim(array_shift($content_type));
foreach ($content_type as $param) {
$param = explode('=', $param, 2);
$key = trim($param[0]);
if ($key == 'charset') {
$mail->CharSet = trim($param[1]);
}
else {
$mail->ContentType .= '; ' . $key . '=' . trim($param[1]);
}
}
unset($headers['Content-Type']);
}
$properties = array(
'X-Priority' => 'Priority',
'Content-Transfer-Encoding' => 'Encoding',
'Sender' => 'Sender',
'Message-ID' => 'MessageID',
'Return-Path' => 'ReturnPath',
);
foreach ($properties as $source => $property) {
if (isset($headers[$source])) {
$mail->{$property} = $headers[$source];
unset($headers[$source]);
}
}
unset($headers['MIME-Version']);
foreach ($headers as $key => $value) {
$mail
->AddCustomHeader("{$key}:{$value}");
}
$mail->Subject = $subject;
$mail->Body = $body;
return $mail
->Send();
} catch (phpmailerException $e) {
drupal_set_message(t('Sending of at least one e-mail failed. The error returned was:<br />@error.', array(
'@error' => $e
->getMessage(),
)), 'error');
watchdog('phpmailer', $e
->getMessage(), WATCHDOG_ERROR);
return FALSE;
}
}