私のコンテンツには、著者が入力した1つの日付フィールドがあり、明日または1か月後などの将来の見積もり日として入力されます。その推定日に応じて、その日にメールがトリガーされます。
例:私の日付フィールドは「離乳日」であり、著者はその日の1か月後にメールをトリガーするように入力します。
これには、Rules Schedulerモジュール( Rules に含まれる)を使用できます。次のチュートリアルでは、あなたのケースと同様のケースについて説明します。 http://www.webwash.net/tutorials/how-send-follow-emails-using-rules-scheduler-drupal-7
つまり、次のことを行う必要があります。
スケジュールされたコンポーネントの評価はcronによってトリガーされることに注意してください。サイトでcronが正しく構成されていることを確認する必要があります。
それが役に立てば幸い
以下の手順で説明するように、このような電子メールを送信するには、_ Rules モジュールをRules Scheduler
(そのサブモジュール)とともに使用します。
離乳日フィールドにマシン名(たとえば)field_weaning_date
があり、1つの日付のみが許可されているとします。
作成されるルールComponentは次のとおりです Rules エクスポート形式(コピーと貼り付けを介して独自の環境にインポートするだけ):
{ "rules_send_email_notification" : {
"LABEL" : "Send eMail notification",
"PLUGIN" : "action set",
"OWNER" : "rules",
"REQUIRES" : [ "rules" ],
"USES VARIABLES" : { "user_to_notify" : { "label" : "User to be notified", "type" : "user" } },
"ACTION SET" : [
{ "mail" : {
"to" : [ "user-to-notify:mail" ],
"subject" : "Reminder you requested",
"message" : "This is a reminder that you asked for ...",
"from" : "[site:mail]",
"language" : [ "" ]
}
}
]
}
}
明らかに、メールのSubjectおよびContentのレビューが必要な場合があります/チューニング。ただし、他のFrom電子メールIDを使用することもできます。
Ruleが作成される Rules エクスポート形式です(コピーアンドペーストで独自の環境にインポートするだけです):
{ "rules_send_email_on_a_scheduled_date" : {
"LABEL" : "Send eMail on a scheduled date",
"PLUGIN" : "reaction rule",
"OWNER" : "rules",
"REQUIRES" : [ "rules", "rules_scheduler" ],
"ON" : { "node_presave" : [] },
"IF" : [
{ "entity_has_field" : { "entity" : [ "node" ], "field" : "field_weaning_date" } }
],
"DO" : [
{ "schedule_delete" : { "component" : "rules_send_email_notification", "task" : "[node:nid]" } },
{ "schedule" : {
"component" : "rules_send_email_notification",
"date" : [ "node:field-weaning-date" ],
"identifier" : "[node:nid]",
"param_user_to_notify" : [ "node:author" ]
}
}
]
}
}
上記のルールは、前のステップのRules Componentを参照しています。
このルールの一部であるschedule_delete
は、データフィールドを更新するときに、以前に「スケジュールされた」リマインダーが確実に削除されるようにするためです(そのため、リマインダーが1つだけトリガーされ、最後に入力された日付が使用されます)。
注意:質問の仕様に従って、「作者」とは別の誰かが離乳日を更新した場合、その結果、次のようになります。
schedule_delete
の部分を削除してください)。