Bachir Soussi Chiadmi 2121a356b3 more module updates
2015-04-20 18:13:58 +02:00

104 lines
2.8 KiB
Plaintext

<?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').
*/
/**
* 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, // This is the max run time per cron run in seconds.
);
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($variables) {
_smtp_mailer_send($variables);
}
function _smtp_mailer_send($variables) {
$mailer = $variables['mailer'];
$to = $variables['to'];
$from = $variables['from'];
// Let the people know what is going on.
watchdog('smtp', 'Sending mail to: @to', array('@to' => $to));
// Try to send e-mail. If it fails, set watchdog entry.
if (!$mailer->Send()) {
watchdog('smtp', 'Error sending e-mail from @from to @to : !error_message', array('@from' => $from, '@to' => $to, '!error_message' => $mailer->ErrorInfo), WATCHDOG_ERROR);
return FALSE;
}
$mailer->SmtpClose();
return TRUE;
}