Письма в друпале отправляются довольно нестандартным способом. Во первых, в любом месте вашего модуля, нужно вызвать функцию drupal_mail в которую передать название модуля, идентификатор письма, адрес получателя и язык письма.
drupal_mail('mymodule', 'my_notify', 'to-user@gmail.com', language_default(), array('somevar' => 'somevalue'));
Последним параметром можно передать какие-нибудь данные, которые будут участвовать в генерации темы письма или сообщения.
Во вторых, в модуле нужно реализовать хук hook_mail, в котором в зависимости от идентификатора письма, будет заполнена тема и текст письма.
/**
* Реализация hook_mail()
*/
function mymodule_mail($key, &$message, $params) {
if ($key == 'my_notify') {
$message['subject'] = 'Тема';
$message['body'][] = "Текст письма \n somevar = {$params['somevar']}";
}
}
Громоздкая с виду конструкция, но она позволяет другим модулям, с помощью хука hook_mail_alter, изменять свойства любого письма. Так же функция drupal_mail позволяет создавать письма на основе шаблонов из модулей, в которых реализован хук hook_mail.
Отправлять письма можно и без реализации hook_mail(), для этого в drupal_mail() нужно указать имя модуля — system, а в $params передать специально сформированный массив:
drupal_mail('system', 'mail', 'to@example.com', language_default(), array(
'context' => array(
'subject' => 'Some subject',
'message' => 'Some message',
)
));
Как отправить e-mail с вложением (атачем).
Написанное актуально для
Drupal 6, Drupal 7