Drupal 7 - 向用户发送有关内容修改的电子邮件

时间:2018-02-20 15:34:08

标签: drupal-7 drupal-webform drupal-rules

我有一个webform页面,用户提交其查询。在表单提交时,将向用户和管理员发送确认邮件。我已经安装了Custom Webform Comment模块,用户和管理员都可以通过该模块注释并更改表单中的状态,现在我想将每条评论和状态更改的邮件发送给管理员和用户。

我尝试使用Webform Rules模块,但它无效。该模块未发送邮件

我可以通过其他方式或模块向用户发送邮件吗?

Webform版本7.x-4.15

提前致谢:)

2 个答案:

答案 0 :(得分:1)

你可以在你的自定义表单中使用hook_webform_submission_update来发送电子邮件,或者你可以使用action和triger

  1. 为此您必须添加新的自定义模块,您可以参考此链接: - https://www.drupal.org/docs/7/creating-custom-modules/getting-started

  2. 在custom.module文件中
  3. 添加此代码

  4. 参考此代码

     function <moduleName>_webform_submission_update($node, $submission)
            {
                            // you can send mail like this
                            $message = 'New signup email address'; // Body of your email here. 
                            //you can also set any form detail using $node,$submission variable
                            $params = array(
                                   'body' => $message,
                                   'subject' => 'Website Information Request',
                                   'headers'=>'simple',
                             );
                             $to = "Your Email Address";
                            drupal_mail('contactform', 'send_link', $to, language_default(), $params, 'demo@demo.com', TRUE);
    
             }
    

答案 1 :(得分:0)

我通过在Custom Webform Comment模块中插入hook_mail代码解决了上述问题。

如果其他人遇到同样的问题,请在custom_webform_comments.module文件中插入代码。

@OnClick(R.id.loadMore)
public void onLoadMoreClick() {
    loadMoreData();
}

在上面的代码行之后,将以下代码放在数据库插入查询后面的函数custom_webform_comments_commentform_submit()中,以便在每次评论更新后发送邮件。

/**
 * Implements hook_mail().
 */
function custom_webform_comments_mail($key, &$message, $params) {
  switch($key) {
    case 'custom_webform_comments_email':
      $message['subject'] = t('Submit Request Form update');
      $message['body'][] = t('You have got a new comment and status update on your submitted form.',array('@site-name' => variable_get('site_name','example.com')));
       $message['body'][] = t(variable_get('custom_webform_comments_email_text',''));
      break;
  }
}

与在每次状态更新时获取邮件类似,请更新以下功能。

function custom_webform_comments_commentform_submit($form, $form_state) {
  $fv = $form_state['values'];
  $insert1 = db_insert('custom_webform_comments')
    ->fields(array(
      'cid' => NULL,
      'comment' => $fv['addnew']['comment'],
      'subject' => $fv['addnew']['subject'],
      'nid' => $fv['addnew']['nid'],
      'sid' => $fv['addnew']['sid'],
      'commenter_user_id' => $fv['addnew']['commenter_user_id'],
      'comment_parent' =>  '0',
      'ts' => date("Y-m-d H:i:s")
      ))->execute();
    if($insert1)
    {
        global $user; 
        $params = array(
           'body' => $message,
           'subject' => 'Website Information Request',
           'headers'=>'simple',
        );
        $message = drupal_mail('custom_webform_comments', 'custom_webform_comments_email', $user->mail, language_default(), $params, 'test@example.com', TRUE);
        if (!empty($message['result'])) {
            watchdog('mail', 'Mail sent Successfully (from %from to %to) for comment update', array('%from' => $message['from'], '%to' => $message['to']), WATCHDOG_NOTICE);
            //drupal_set_message("Mail sent!");
        }
        else{
            watchdog('mail', 'Error sending e-mail (from %from to %to).', array('%from' => $message['from'], '%to' => $message['to']), WATCHDOG_ERROR);
            drupal_set_message(t('Unable to send e-mail. Contact the site administrator if the problem persists.'), 'error');
        }
    }
    return $insert1; 
}