You are here

function messaging_phpmailer_drupal_mail in Messaging 6

Same name and namespace in other branches
  1. 5 messaging_phpmailer/messaging_phpmailer.module \messaging_phpmailer_drupal_mail()
  2. 6.4 messaging_phpmailer/messaging_phpmailer.module \messaging_phpmailer_drupal_mail()
  3. 6.2 messaging_phpmailer/messaging_phpmailer.module \messaging_phpmailer_drupal_mail()
  4. 6.3 messaging_phpmailer/messaging_phpmailer.module \messaging_phpmailer_drupal_mail()

Send a message via PHPMailer. This function mimics drupal_mail. We do not use drupal_mail instead because we want to be able to send mail with both PHPMailer and MIMEMail.

1 call to messaging_phpmailer_drupal_mail()
messaging_phpmailer_send_msg in messaging_phpmailer/messaging_phpmailer.module
Send mail message to user account. Supports bulk sending

File

messaging_phpmailer/messaging_phpmailer.module, line 98
HTML Mail using PHPMailer. Messaging method plug-in.

Code

function messaging_phpmailer_drupal_mail($message) {
  include_once './' . drupal_get_path('module', 'messaging_phpmailer') . '/PHPMailer/class.phpmailer.php';
  $mail = new PHPMailer();
  $mail
    ->IsSMTP();

  // telling the class to use SMTP
  $mail->CharSet = 'utf-8';
  $mail->ContentType = 'text/html';
  $host = variable_get('messaging_phpmailer_smtp_server', ini_get('SMTP'));
  if ($host) {
    $mail->Host = $host;

    // SMTP server
  }
  else {
    watchdog('messaging', 'SMTP server cannot be reached.', array(), WATCHDOG_ERROR);
    return FALSE;
  }

  // Theme the mail message
  list($subject, $body) = theme('messaging_phpmailer', $message);

  // Add some headers. Look for rfc2822 "From" formatting (ex: "name" <foo@bar.com>)
  $from = array();
  preg_match('/["\']?(?<name>.*)["\']? <(?<email>.*)>/', $message['headers']['From'], $from);
  $mail->From = !empty($from['email']) ? $from['email'] : $message['headers']['From'];
  $mail->FromName = !empty($from['name']) ? $from['name'] : '';
  $mail
    ->AddAddress($message['to']);
  if (!empty($message['headers']['Message-ID'])) {
    $mail
      ->AddCustomHeader('Message-ID: ' . $message['headers']['Message-ID']);
  }
  if (!empty($message['headers']['Reply-To'])) {
    $mail
      ->AddReplyTo($message['headers']['Reply-To']);
  }

  // Strip HTML out of $body for plaintext equivalent of HTML email.
  $mail->AltBody = drupal_html_to_text($body);

  // The subject has been already filtered by messaging module
  $mail->Subject = $subject;
  $mail->Body = str_replace("\r", '', $body);

  // If enabled debug option, log everything...
  if (variable_get('messaging_phpmailer_debug', 0)) {
    $mail->SMTPDebug = TRUE;
    watchdog('messaging', 'PHPMailer debug message: ' . $mail
      ->Send() . ' - ' . $mail->ErrorInfo);
  }
  else {
    return $mail
      ->Send();
  }
}