匿名ユーザーに注文通知メールを送信できません。基本的なテストとして、「チェックアウトプロセスの完了」をトリガーし、現在のユーザーが認証されているかどうかをチェックし、認証されていない場合は[commerce-order:mail]にメールを送信する新しいルールを作成しました。トリガーされると、次のエラーメッセージが表示され、注文からメールアドレスを取得できないことを示します。
Error sending e-mail (from [email protected] to ).
問題は、Rules configが単純であるためではないことにかなり確信していますが、とにかくエクスポートは次のとおりです。
{ "rules_anonymous_order_notification" : {
"LABEL" : "Anonymous Order Notification",
"PLUGIN" : "reaction rule",
"OWNER" : "rules",
"TAGS" : [ "Commerce Checkout" ],
"REQUIRES" : [ "rules", "commerce_checkout" ],
"ON" : { "commerce_checkout_complete" : [] },
"IF" : [
{ "NOT user_has_role" : {
"account" : [ "site:current-user" ],
"roles" : { "value" : { "2" : "2" } }
}
}
],
"DO" : [
{ "mail" : {
"to" : [ "commerce-order:mail" ],
"subject" : "Order received!",
"message" : "This is to tell you the order has been received.",
"language" : [ "commerce-order:state" ]
}
}
]
}}
他に何が原因ですか?
編集: 'commerce_order'の匿名注文のメール列が空になっていることに気づきました-これは正常ですか?
ここでのイベントのバリエーションであるイベントについて issue#430274 を見て、「何かを保存した後」が実際に発生することをどういうわけか説明します...「何かを保存する前に」 "(これはバグではなく、単に Rules モジュールの動作方法...).
これらの種類の問題を回避するための考えられる妥協策は、ルールコンポーネントのRules Actionで実行しようとしていることを変換して、 Ruleは、そのルールコンポーネントの(Rules Schedulerサブモジュールを使用して)実行をスケジュールします。たとえば、数秒後または数分後(cronジョブが十分に頻繁に実行される場合、それ以外の場合は、次回cronが実行されるとき)。この妥協により、ルールコンポーネントの実行時に、「チェックアウトプロセス」が確実に完了し、「電子メールID」が期待どおりに更新されることが保証されます。
上記のいずれも役に立たない場合は、 Rulesdebuggingに進んでください。 「 条件内の変数の値を表示するにはどうすればよいですか? 」。
そのタイプのデバッグの結果によっては、(一時的に) Devel モジュールを有効にして、(一時的に)「値を表示します」(あなたの場合はcommerce-order:mail
)。問題の原因が james からのコメントに書かれていることによるものかどうかを確認すると役立つ場合があります。つまり、
匿名ユーザーにはメールが送信されません。そのため、コマースオーダーにもメールは送信されません。コマースには、ユーザーがチェックアウト中にログインできるようにするオプションがあります。私は機能がうまく機能すると信じています。私は通常、ユーザーに自分自身のチェックアウトに進む前にログインを要求します。ですから、私は商取引とルールに関する上記の問題に直面したことがありません。
注文のメールプロパティが入力されていない場合は、[アカウント情報]チェックアウトペインを無効にしているか、顧客が何らかの方法でそれをバイパスできるようになっている可能性があります。 (たとえば、オフサイトの支払い方法では、支払いゲートウェイの統合方法によっては、メールが適切に入力されない場合があります。)