web-dev-qa-db-ja.com

ルールを使用して、ユーザー参照フィールドで参照されているすべてのユーザーに個別のメールを送信する方法

ユーザー参照フィールドのあるノードがあります。このノードでは、関係のあるユーザーを無制限に選択できます。このノードを保存して、その参照フィールドで選択された各ユーザーに個別のメールが送信されるようにします(ルールを介して)、またはそれらすべてのユーザーがBCCされた単一のメール。現在、ルールの「宛先」フィールドで「node:field-friends-you-wish-to-invite:0:mail」が選択された「メール送信」アクションは、リストで選択された最初のユーザーにのみメールを送信します、他に何人のユーザーが選択されていても。

どうすればこれを達成できますか?

3
hockey2112

次のようなルールを作成する必要があります( Rules エクスポート形式):

{ "rules_send_email_to_selected_email_ids" : {
    "LABEL" : "Send eMail to selected eMail IDs",
    "PLUGIN" : "reaction rule",
    "OWNER" : "rules",
    "REQUIRES" : [ "rules" ],
    "ON" : {
      "node_insert--article" : { "bundle" : "article" }
    },
    "DO" : [
      { "LOOP" : {
          "USING" : { "list" : [ "node:field-email-addresses" ] },
          "ITEM" : { "current_email_id" : "Current eMail ID" },
          "DO" : [
            { "drupal_message" : { "message" : "An eMail about this new content with title \u0022[node:title]\u0022 and URL [node:url] will be delivered to [current-email-id:value]." } },
            { "mail" : {
                "to" : "[current-email-id:value]",
                "subject" : "You have new mail ...",
                "message" : "New content was created with title [node:title] ... You can read about it at [node:url].",
                "language" : [ "" ]
              }
            }
          ]
        }
      }
    ]
  }
}

上記のルールの詳細:

  • Rules Event:「Article」タイプの新しいコンテンツを保存した後(ニーズに合わせて、つまりXYZにタイプを適応させます)。
  • ルールアクション:複数値の選択リスト(電子メールIDを含む)のすべての選択された値の「ループ」、マシン名field_email_addresses(必要に応じてマシン名を変更してください)。各アイテム(= current_email_id)、件名とメッセージを含むメールが作成されます。これには、作成されるノードのタイトルとURLも含まれます。注:これにより、選択した各メールIDに1つの個別のメールが送信されます(選択したすべてのメールIDに1つのメールを送信する方法はありません)。

ルールUIを有効にしている場合は、コンテンツタイプのマシン名と電子メールIDのリストを含むフィールド名を適合させた後、上記のルールを自分のサイトにインポートできます。

ルールが期待どおりに機能することを確認したら、ノードが保存された後にメッセージを表示するルールアクションを削除することができます(drupal_message)。

ビデオチュートリアル:同様のシナリオを示す リストとループ ビデオをご覧ください。

更新

電子メールIDを含むそのようなフィールドがなく、ユーザーIDへのエンティティ参照フィールドであるフィールドがある場合は、上記のルールのマイナーバリエーションを使用できます。の代わりに field_email_addresses、ユーザーのリストをループ処理する必要があります(ユーザー参照フィールドで示されます。名前がfield_user_ids)。そして、各「アイテム」(「current_userid ")、" to "フィールドではcurrent-userid:mail処理中のユーザーのトークン。このようなルールは次のようになります( Rules エクスポート形式):

{ "rules_send_email_to_selected_user_ids" : {
    "LABEL" : "Send eMail to selected user IDs",
    "PLUGIN" : "reaction rule",
    "OWNER" : "rules",
    "REQUIRES" : [ "rules" ],
    "ON" : {
      "node_insert--article" : { "bundle" : "article" }
    },
    "DO" : [
      { "LOOP" : {
          "USING" : { "list" : [ "node:field-user-ids" ] },
          "ITEM" : { "current_userid" : "Current user ID" },
          "DO" : [
            { "drupal_message" : { "message" : "An eMail about this new content with title \u0022[node:title]\u0022 and URL [node:url] will be delivered to eMail ID [current-userid:mail]." } },
            { "mail" : {
                "to" : "[current-userid:mail]",
                "subject" : "You have new mail ...",
                "message" : "New content was created with title [node:title] ... You can read about it at [node:url].",
                "language" : [ "" ]
              }
            }
          ]
        }
      }
    ]
  }
}
1
Pierre.Vriens