Автоматическая рассылка писем с помощью simplenews

Ещё один хитрый способ, как сделать рассылку на сайте.
Для этого нам понадобится Simplenews и всё. Ну можете ещё поставить модули для HTML писем.

Задача такая: У вас несколько типов материалов (Блог, Статьи, Новости). И при создании материала нужно создавать автоматически нашу рассылку и отправлять в очередь.

Так как я не любитель Rules, то мне оказалось проще написать 2 функции:

Тут стандартный hook_node_insert(), вещаем с его помощью нашу функцию.

function my_module_node_insert($node) {
  if ($node->type == 'blog' && $node->status = 1) {
    create_newsletter($node);
  }
}

А это уже почти обычная функция создания рассылки.

function create_newsletter($node) {
  module_load_include('inc', 'simplenews', 'includes/simplenews.mail'); // Не забываем подключить файл simplenews.mail.inc
  $reed_more = '<br> <a targt="blank_" href="'. url("node/".$node->nid) .'">Читать далее</a>';
  $node_n = new stdClass();
  $node_n->title = $node->title;
  $node_n->type = "simplenews";
  $node_n->language = LANGUAGE_NONE; 
  $node_n->body[$node_n->language][0]['value'] = $node->field_ann[LANGUAGE_NONE][0]['value'] . $reed_more;
  $node_n->body[$node_n->language][0]['format']  = 'full_html';
  $node_n->field_simplenews_term[$node_n->language][0]['tid'] = $node->field_simplenews_term['ru'][0]['tid'];
  $node_n->uid = 1;
  $node_n->status = 1; 
  $node_n->promote = 0; 
  $node_n->sticky = 0;
  node_object_prepare($node_n);
  node_save($node_n);
 
  simplenews_add_node_to_spool($node_n); // Это функция, которая ставит наше письмо в очередь на отправку.
  drupal_set_message(t('Статья "%title" поставлена в очередь для рассылки.', array('%title' => $node_n->title)));
}