【问题标题】:How to send automated emails to each user about their content in Drupal如何向每个用户发送关于他们在 Drupal 中的内容的自动电子邮件
【发布时间】:2013-01-09 12:34:35
【问题描述】:

我有一个 Drupal 站点,它允许用户创建一个帐户并发布他们自己的内容。但是,我已经尝试了几个小时,但没有运气尝试设置一个电子邮件服务,例如每周向所有用户发送一封包含内容的电子邮件。该电子邮件将显示他们的内容获得了多少页面点击量。任何帮助都感激不尽!干杯

【问题讨论】:

  • 你能指出你所面临的具体问题吗……看起来你想要完成很多事情。如何设置 cron,如何收集相关数据(那些相关数据是什么?),如何使用 drupal 发送电子邮件 您可以将您的问题拆分为更具体的问题,以便更容易给出答案。如果您担心性能和超时,也请提及它们。

标签: drupal drupal-7


【解决方案1】:

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

【讨论】:

    【解决方案2】:

    我和我的同事找到了解决方案。我们首先创建了一个规则,它将在 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 的自定义内容节点并检索标题、电子邮件和统计信息,然后将信息通过电子邮件发送给内容所有者。

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-02-03
      • 2019-04-21
      • 2016-09-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多