hook_mail  →  Отправка писем из модуля

published 10 August 2011

Для отправки писем из нашего абстрактного модуля нам понадобится реализация, hook_mail.

hook_mail($key, &$message, $params),

где

$message = array( ‘id’ => $module . ‘_’ . $key, ‘module’ => $module, //название нашего модуля ‘key’ => $key, //идентификатор отправки ’to’ => $to, /адрес отправителя, должен соответствовать RFC 2822 (например: user@example.com user@example.com, anotheruser@example.com User User , Another User )/ ‘from’ => isset($from) ? $from : $default_from, //адрес отправителя, по умолчанию адрес сайта ’language’ => $language, ‘params’ => $params, //массив параметров для построения письма ‘subject’ => ‘’, //тема письма ‘body’ => array(), //массив строк тела письма );

$language - язык, $params - массив параметров, для построения письма.

Вызываться наш хук будет через функцию drupal_mail:

drupal_mail($module, $key, $to, $language, $params = array(), $from = NULL, $send = TRUE)

Рассмотрим на примере модуля типа обратная связь:

//$data[‘mail’] = ’example@yandex.ru’ //$data[‘subject’] = ‘Обратная связь. Поступило новое сообщение’ //$data[‘body’] = ‘Тут был Вася’ function feedback_send($data) {

  // функция feedback_mail будет вызвана, по первому параметру drupal_mail
  drupal_mail('feedback', 'notice', $data['mail'], language_default(), $data);

}

function feedback_mail($key, &$message, $params) {

switch($key) {
  case 'notice':
    $message['subject'] = $params['subject'];
    $message['body'][] = 'Поступило новое сообщение следующего содержания';
    $message['body'][] = $params['body'];
    break;
}

}