別のユーザーをサブスクライブして、このユーザーの新しいコンテンツのメッセージを取得するユーザー用のルールを作成しました。
Events
EVENT
After saving new content
Conditions
ELEMENTS
None
Actions
ELEMENTS
Fetch users who have flagged a user
Parameter: Flag: subscribe_this_user, user: [node:author]
Provides variables: subscribers (user)
Loop
Parameter: List: [user]
List item: Current list item (liker)
Send mail
Parameter: To: [liker:mail], Subject: New event on [site:name]!, Message: New content [node:title] by..., From: [site:name
これらのメールを遅延して送信するにはどうすればよいですか?たくさんのメールを送るのはスパムだそうです。 Rules Schedulerについて聞きましたが、それを自分のルールに統合する方法がわかりません。
以下に、これを機能させる方法の概要を示します。
追加のフラグを導入して、これらの(新しい)ノードに、「メッセージを取得するために別のユーザーをサブスクライブしたユーザー」がこれらの(新しい)ノードに「フラグを立てる」ことを許可します(質問のとおり) )。そのフラグに「未解決のメール通知」というラベルを付けたとします(後でそのメールを送信するために何かがまだ発生する必要があることを示すため)。
次のように、既存のルールを適用します。
Views および Views bulk operations(VBO) モジュールを使用して、フラグが付けられたすべてのノード(ステップ1の新しいフラグでフラグが付けられた)のVBOリストを作成し、フラグ付けの日付でソートします。 (最も古いものが最初)、結果を最初のXユーザーのみに制限します(ニーズに合うXの値を選択します)。
「VBOリストをロードする」(手順3から)新しいルールコンポーネントを作成し、そのルールにループを追加して、これらのルールアクションを実行します。
同じルールで、最後のルールアクションとして、同じルールの実行をY分または数時間以内に再スケジュールするアクションを追加します(ニーズに合ったYの値を選択します)。
ルールUIを使用して、(ステップ4からの)その自己再スケジュールルールコンポーネントの最初の実行を手動でトリガーします。
上記のアプローチを使用すると、Y分(または数時間)ごとに、ルールはXユーザーに「要求どおり」通知します。
ここでは、メールの延期は間違った解決策だと思います。このような質問は、ホスティングがサイトプロファイルに適していない可能性があることを示しています。
サイトモデルの一部でない限り、配信を遅らせる回避策はユーザーエンゲージメントを示すだけです。 1日の間に、同じ数のメールを送信することになるため、スパマーとしてフラグが立てられる可能性が減ることはありません。
より適切に機能するのは、信頼性の高いメール配信メカニズムを確実に使用し、スパムの動作(過剰または不要な通知の送信など)を回避することです。
既存のホスティングで送信メールが制限されており、提供する制限よりも多くのメールを送信する必要がある場合は、ニーズに合った(将来の成功に対応できる)プロバイダーを見つけてください。市場には、選択可能なメールプロバイダーが多数あり、信頼性の高いセルフホストシステムのオプションもあります。