web-dev-qa-db-ja.com

特定の役割のすべてのユーザーにWebフォームの電子メールを送信するにはどうすればよいですか?

特定の役割のすべてのユーザーにWebフォームデータを電子メールで送信することはできますか?

Webフォームの電子メール設定には、そのようなオプションはありません。

私は Rules も試しましたが、ルールでは、WebフォームトークンがWebフォーム送信データをレンダリングしています。

ここに私のルールが添付されています。

{ "rules_send_email_to_ce_user_on_webform_submit" : {
    "LABEL" : "Send email to CE user on webform submit",
    "PLUGIN" : "reaction rule",
    "ACTIVE" : false,
    "OWNER" : "rules",
    "REQUIRES" : [ "rules", "webform_rules" ],
    "ON" : { "webform_rules_submit" : [] },
    "IF" : [
      { "webform_has_id" : {
          "form_id" : "[form-id:value]",
          "selected_webform" : { "value" : { "webform-client-form-121" : "webform-client-form-121" } }
        }
      }
    ],
    "DO" : [
      { "webform_submissions_load" : {
          "USING" : { "nid" : "121", "sid" : [ "data:sid" ] },
          "PROVIDE" : { "submissions" : { "submissions" : "Fetched submissions" } }
        }
      },
      { "mail_to_users_of_role" : {
          "roles" : { "value" : { "11" : "11" } },
          "subject" : "Form submission from: [node:title]",
          "message" : "DATA\r\n[data:data]\r\n\r\nRAW\r\n[data:data-raw]\r\n\r\nField value\r\n[data:title-value]"
        }
      }
    ]
  }
}

他の方法は?

2
Ahmad

質問のエクスポートされたルールから、 Webform Rules モジュールがすでに有効になっているようです(以下の前提条件...)。

[〜#〜] vbo [〜#〜] が有効なビューの結果を ルールで処理することを試してみてください。ルールは2つのルールアクションを実行します。

  • 処理するVBOリストをロードします。
  • ループを追加して、ビューの結果に含まれる行ごとに、ルールアクションを実行します。

このために作成する必要があるVBOビューの詳細:

  1. Views モジュールを使用して、ユーザーリストを作成します。
  2. 処理するロールに適切なフィルターを含める必要があります。
  3. 電子メールで送信される各ユーザーに対して正確に1つの結果(行)が必要です。
  4. 列の1つは電子メールIDである必要があります(これが機能するために必要な他の列が表示されません)。

詳細については、チュートリアル「 VBOが有効なビューの結果をルールで処理する方法は? 」を参照してください。

1
Pierre.Vriens

hook_form_alterで、Webフォームの追加の送信ハンドラを追加できます。次に、送信ハンドラーで、その役割を持つユーザーのリストを取得します。以下のコードを試して、ユーザーのリストを取得できます。次に、送信されたデータをこれらのユーザーに電子メールで送信します。

// get role data by role name
$role_data = user_role_load_by_name('member');

// get list of users with specific role
$uids = db_select('users_roles', 'ur')
->fields('ur', array('uid'))
->condition('rid', $role_data->rid, '=')
->execute()
->fetchCol();

$users_list = user_load_multiple($uids);

これにはもっと良い解決策があるかもしれません。しかし、試すことができます。

1
Jose D Jo