如何在Drupal中向每个用户发送有关其内容的自动电子邮件

时间:2013-01-09 12:34:35

标签: drupal drupal-7

我有一个Drupal网站,可让用户创建帐户并发布自己的内容。然而,我一直在努力尝试设置一个电子邮件服务几个小时没有运气,该服务每周向所有用户发送电子邮件,例如。该电子邮件将向他们显示他们的内容有多少页面点击。任何帮助都感激不尽!干杯

2 个答案:

答案 0 :(得分:0)

我认为在这种情况下你必须使用drupal rules 模块。

答案 1 :(得分:0)

我和我的同事找到了解决方案。我们首先创建了一个规则,它将在cron作业上运行,以执行下面的自定义php。

$type = '<node_type>';

$articles = db_select('node')
->fields('node', array('nid', 'title'))
->condition('type', $type, '=')
->execute()
->fetchAllKeyed();

$nodes = array();
foreach ($articles as $nid => $title) {
    $nodes[] = node_load($nid);
}

$checked = array();

foreach($nodes as $node) {
    if(!in_array($node->nid, $checked)) {
        $statistics = statistics_get($node->nid);
        $email = $node->field_email['und'][0]['email'];
        $subject = 'Content view update';
        $headers = 'From: you@domain.com' . "\r\n" .
        'Reply-To: you@domain.com' . "\r\n" .
        'X-Mailer: PHP/' . phpversion();

        $message =   'Hi,
        Your content has been viewed ' . $statistics . ' times';

        global $language;
        $params['subject'] = t($subject);
        $params['body']    = array(t($message));

        drupal_mail('smtp', 'smtp-test', $email, $language, $params);
        $checked[] = $node->nid;

    }
}

php脚本循环遍历所有类型为$type的自定义内容节点,并检索标题,电子邮件和统计信息,然后将信息通过电子邮件发送给内容所有者。

如果有人有更好的解决方案,请你发表评论。