| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157 | <?php/** * @file * Enables Drupal to send e-mail directly to an SMTP server. * * This module uses a customized extract of the PHPMailer * library (originally by Brent R. Matzelle, now maintained *  by Codeworx Tech.) relicensed from LGPL to GPL, included * as a part of the module. * * Overriding mail handling in Drupal to make SMTP the default * transport layer, requires to change the mail_system variable's * default value array('default-system' => 'DefaultMailSystem'). * This module uses array('default-system' => 'SmtpMailSystem'). *//** * SMTP logging -- logging is disabled */define('SMTP_LOGGING_NONE', 0);/** * SMTP logging -- all messages are logged */define('SMTP_LOGGING_ALL', 1);/** * SMTP logging -- only errors are logged */define('SMTP_LOGGING_ERRORS', 2);/** * Implements hook_help(). */function smtp_help($path, $arg) {  switch ($path) {    case 'admin/help#smtp':      return t('Allow for site emails to be sent through an SMTP server of your choice.');  }}/** * Implements hook_menu(). */function smtp_menu() {  $items['admin/config/system/smtp'] = array(    'title'            => 'SMTP Authentication Support',    'page callback'    => 'drupal_get_form',    'page arguments'   => array('smtp_admin_settings'),    'access arguments' => array('administer smtp module'),    'description'      => 'Allow for site emails to be sent through an SMTP server of your choice.',    'file'             => 'smtp.admin.inc',  );  return $items;}/** * Implements hook_permission(). */function smtp_permission() {  return array(    'administer smtp module' => array(      'title' => t('Administer SMTP Authentication Support module'),      'description' => t('Perform administration tasks for SMTP Authentication Support module.'))  );}/** * Implements hook_mail(). */function smtp_mail($key, &$message, $params) {  if ($key == 'smtp-test') {    $message['subject'] = $params['subject'];    $message['body'] = $params['body'];  }}/** * Implementation of hook_cron_queue_info(). */function smtp_cron_queue_info() {  $queues['smtp_send_queue'] = array(    'worker callback' => 'smtp_send_queue_runner',    'time' => 60,  );  $queues['smtp_failure_queue'] = array(    'worker callback' => 'smtp_failure_queue_runner',    'time' => 30,  );  return $queues;}/** * smtp_send_queue queuer. */function smtp_send_queue($mailerObj) {  $queue = DrupalQueue::get('smtp_send_queue');  $queue->createItem($mailerObj);}function smtp_send_queue_runner($message) {  $logging = variable_get('smtp_debugging', SMTP_LOGGING_ERRORS);  // Legacy for mails queued before 7.x-v1.3  // What was passed to the runner used to be a PHPMailer object, not a message array.  if (!empty($message['mailer']) && is_object($message['mailer'])) {    if (!$message['mailer']->Send()) {      if ($logging == SMTP_LOGGING_ALL || $logging == SMTP_LOGGING_ERRORS) {        watchdog('smtp', 'Error sending e-mail from @from to @to, will retry on cron run : !error_message.',          array(            '@from' => $message['from'],            '@to' => $message['to'],            '!error_message' => $message['mailer']->ErrorInfo,          ), WATCHDOG_ERROR);      }    }    return;  }  // Let the people know what is going on.  if ($logging == SMTP_LOGGING_ALL) {    watchdog('smtp', 'Sending mail to: @to', array('@to' => $message['to']));  }  // Send the message.  $mail_system = new SmtpMailSystem();  $mail_system->mailWithoutQueue($message);}/** * Store failed messages for later. * * @param array $new_message * * @return array *   All messages that have been saved. */function smtp_failed_messages($message) {  $queue = DrupalQueue::get('smtp_failure_queue');  $queue->createItem($message);}/** * Queue runner for smtp_failure_queue. * * @param $message *   A drupal_mail-formatted message. */function smtp_failure_queue_runner($message) {  $queue = DrupalQueue::get('smtp_send_queue');  $queue->createItem($message);}
 |