Đây là một cách tiếp cận khác. (Mã có sẵn trong hộp cát này .)
gật đầu.info
name = Nodemail
description = Sends node e-mails.
core = 7.x
gật đầu.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);
}
gật đầu.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);
}
}
Nội dung tệp cài đặt và lớp NodemailMailSystem được sử dụng để cho phép mô-đun này gửi e-mail html. Hai chức năng khác là triển khai hook_mail () và hook_node_insert () liên quan đến việc gửi e-mail khi một nút của mycontenttype
được tạo. Một điều bạn sẽ phải lưu ý là Drupal sẽ sử dụng tệp mẫu nút của chủ đề đang được sử dụng cho các trang tạo nút (hoặc lõi node.tpl.php nếu chủ đề không có) cho chế độ xem nút . Bạn cũng có thể muốn kiểm tra các hàm node_view () và drupal_mail () được sử dụng ở đây. Toàn bộ điều này nên hoạt động với chức năng lõi 7 của Drupal (không cần mô-đun đóng góp).