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

Для отправки писем из нашего абстрактного модуля нам понадобится реализация, 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@example.com>
                                                                                                         User <user@example.com>, Another User <anotheruser@example.com>)*/

    '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;
    }
  }