Вот другой подход. (Код доступен в этой песочнице .)
nodemail.info
name = Nodemail
description = Sends node e-mails.
core = 7.x
nodemail.install»
<?php
function nodemail_enable() {
$current = variable_get('mail_system', array('default-system' => 'DefaultMailSystem'));
$addition = array('nodemail' => 'NodemailMailSystem');
variable_set('mail_system', array_merge($current, $addition));
}
function nodemail_disable() {
$mail_system = variable_get('mail_system', array('default-system' => 'DefaultMailSystem'));
unset($mail_system['nodemail']);
variable_set('mail_system', $mail_system);
}
nodemail.module
<?php
class NodemailMailSystem extends DefaultMailSystem {
public function format(array $message) {
$message['body'] = implode("\n\n", $message['body']);
$message['body'] = drupal_wrap_mail($message['body']);
return $message;
}
}
function nodemail_mail($key, &$message, $params) {
switch ($key) {
case 'node_mail':
$message['headers']['Content-Type'] = 'text/html; charset=UTF-8;';
$message['subject'] = $params['subject'];
$message['body'][] = $params['body'];
break;
}
}
function nodemail_node_insert($node) {
if ($node->type == 'mycontenttype') {
$params['subject'] = 'Node "' . $node->title . '" was created';
$params['body'] = render(node_view($node));
$to = variable_get('site_mail', '');
$from = 'noreply@example.com';
$lang = language_default();
drupal_mail('nodemail', 'node_mail', $to, $lang, $params, $from);
}
}
Содержимое установочного файла и класс NodemailMailSystem используются для того, чтобы этот модуль мог отправлять html-письма. Две другие функции являются реализациями hook_mail () и hook_node_insert (), которые занимаются отправкой электронных писем при создании узла mycontenttype. Стоит отметить, что Drupal будет использовать файл шаблона узла той темы, который используется для страниц создания узла (или core node.tpl.php, если у темы его нет) для представления узла. , Вы также можете проверить функции node_view () и drupal_mail () , которые здесь используются. Все это должно работать с базовой функциональностью Drupal 7 (дополнительные модули не нужны).