自从我二月份开始与Sylius合作以来,我从未在电子商务流程的任何一步中收到过电子邮件 . 不是在注册时,而不是在订单完成时 .
现在我假设那里根本没有支持,我开始编写自己的邮件程序,接受订单和用户对象来填写邮件 . 今天我发现 SyliusCoreBundle
中有一个Mailer,根本没有发送任何电子邮件 .
手动调用 SwiftMailer
发送电子邮件就好了 - 它甚至会在开发环境中将其发送到 config_dev.yml
中定义的开发人员电子邮件地址 .
这给我带来两个问题:
-
怎么可能Sylius梅勒不能像它应该的那样运作?
-
如果订单完成或用户注册了新帐户,我如何才能最好地添加自己的邮件功能?
我看过“How to override Sylius email system”,它提供了第二个问题的潜在解决方案,想知道这是否可行 .
Edit: 我正在使用Sylius 0.10.0x看起来 sylius.checkout.finalize.complete
会被触发,但此时它永远不会发送邮件 . 我在其他地方手动调用时会这样做:
xxx.listener.order.confirmation:
class: Xxx\Bundle\CoreBundle\EventListener\OrderListener
arguments:
- @xxx.mailer
tags:
- { name: kernel.event_listener, event: sylius.checkout.finalize.complete, method: processOrderConfirmation }
3 回答
我还要补充一点,您可能还需要:
1)这在parameters.yml中
2)如果您已覆盖SyliusWebBundle,请将Resources / Frontend / Emails文件夹移至您的捆绑包
3)上面为config.yml显示的参考
4)您的自定义customerWelcome.html.twig和orderConfirmation.html.twig,这也意味着将其中的所有必需消息转换为所有必需的语言 .
看看
SyliusCoreExtension
类中的loadEmailsConfiguration()
方法(下面复制) . 它会检查您是否已启用电子邮件侦听器并在注册之前正确配置它 .尝试将此添加到您的config.yml以使其正常工作:
注意,如果你想使用自己的模板,你应该从Sylius的
orderConfirmation.html.twig
扩展 . Sylius的TwigSwiftMailer
邮件程序类在模板中需要subject
,body_text
和body_html
块 .我试图先弄清楚同样的事情然后意识到,假设你想要点击确认监听器,我需要定义参数
和
它们在Sylius / Bundle / CoreBundle / Resources / config / mailer / order_confirmation_mailer.xml中使用但从未定义过 . 欢迎电子邮件的类似要求 . 希望这可以帮助!