Hier ist ein anderer Ansatz. (Der Code ist in dieser Sandbox verfügbar .)
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);
}
}
Der Inhalt der Installationsdatei und die NodemailMailSystem-Klasse werden verwendet, damit dieses Modul HTML-E-Mails senden kann. Die beiden anderen Funktionen sind Implementierungen von hook_mail () und hook_node_insert () , die sich mit dem Senden der E-Mails befassen, wenn ein Knoten von mycontenttype
erstellt wird. Eine Sache, die Sie beachten müssen, ist, dass Drupal die Knotenvorlagendatei des Themas verwendet, das für die Knotenerstellungsseiten verwendet wird (oder die Kernknoten.tpl.php, wenn das Thema keine hat) für die Knotenansicht . Möglicherweise möchten Sie auch die hier verwendeten Funktionen node_view () und drupal_mail () überprüfen . Diese ganze Sache sollte mit der Drupal 7-Kernfunktionalität funktionieren (es werden keine bereitgestellten Module benötigt).