我很难向匿名用户发送订单通知邮件。作为一个基本的测试,我已经创建了一个新的规则,它触发‘完成结帐过程’,检查当前用户是否经过身份验证,如果没有发送一封电子邮件给商业-订单:邮件。当它被触发时,我得到以下错误消息,暗示它无法从订单中获得电子邮件地址。
Error sending e-mail (from admin@ourwebsite.com to ).
我相当肯定这个问题与规则配置无关,因为它非常简单,但这里是导出:
{ "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" ]
}
}
]}}
还可能是什么原因造成的?
编辑:我刚刚在db中注意到,“commerce_order”中的邮件列对于匿名订单是空的--这正常吗?
发布于 2017-01-18 06:40:49
看看第430274期,关于一个事件,它是您的事件的一个变体,并以某种方式解释说,“保存了一些东西之后”实际上发生了.“在保存某些东西之前”(这不是一个bug,简单地说,规则模块是如何工作的.)。
避免这类问题的一个可能的折衷方法是在规则组件中转换规则操作中的操作,以便您的规则“计划执行”(使用规则调度子模块)的规则组件。例如,几秒钟或几分钟后(如果cron作业足够频繁地运行,否则将是cron下一次运行)。这种妥协将确保,在执行规则组件时,“签出过程”肯定完成,您的"eMail ID“将按预期进行更新。
如果上述任何一个都没有帮助,那么就继续进行规则调试,正如我对"如何在条件内显示变量的值?“的回答中所解释的。
根据该类型调试的结果,您还可能希望(临时)启用发展模块,以便您可以(临时)添加类似于“显示值”的规则操作(在您的commerce-order:mail中)。检查您的问题的原因是否是因为詹姆斯的注释中所写的内容,即:
匿名用户将不会有任何邮件,这就是为什么商业订单也没有任何邮件。商务中有一个选项,允许用户在结帐时登录。我相信这个功能很好。我通常要求用户在进行结帐之前登录。因此,我从来没有面对上述的商业和规则问题。
发布于 2017-01-18 17:22:29
如果没有填充订单的邮件属性,则可能是您禁用了“帐户信息”结帐窗格,或者允许客户绕过它。(例如,根据支付网关的集成方式,场外支付方法可能无法正确填充邮件。)
https://drupal.stackexchange.com/questions/225865
复制相似问题