自从我二月份开始与Sylius合作以来,我从未在电子商务流程的任何一步中收到过电子邮件。不是在注册时,而是在订单完成时。
现在我认为根本就没有这方面的支持,我开始编写自己的邮件程序,接受订单和用户对象来填写邮件。今天我发现SyliusCoreBundle
中有一个Mailer,它根本没有发送任何电子邮件。
手动调用SwiftMailer
发送电子邮件就好了 - 它甚至会在开发环境中将其发送到config_dev.yml
中定义的开发人员电子邮件地址。
这给我带来两个问题:
我看过“How to override Sylius email system”,它提供了第二个问题的潜在解决方案,想知道这是否可行。
编辑:我正在使用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 }
答案 0 :(得分:1)
我试图先弄清楚同样的事情然后意识到,假设你想要点击确认监听器,我需要定义参数
sylius.email.order_confirmation.template
和
sylius.email.order_confirmation.from_email
在Sylius / Bundle / CoreBundle / Resources / config / mailer / order_confirmation_mailer.xml中使用,但从未定义过。欢迎电子邮件的类似要求。希望这有帮助!
答案 1 :(得分:1)
查看loadEmailsConfiguration()
类中的SyliusCoreExtension
方法(下面复制)。它会在注册之前检查您是否已启用电子邮件侦听器并正确配置它。
// src/Sylius/Bundle/CoreBundle/DependencyInjection/SyliusCoreExtension.php
protected function loadEmailsConfiguration(array $config, ContainerBuilder $container, XmlFileLoader $loader)
{
foreach ($this->emails as $emailType) {
$loader->load('mailer/'.$emailType.'_mailer.xml');
$fromEmail = isset($config[$emailType]['from_email']) ? $config[$emailType]['from_email'] : $config['from_email'];
$container->setParameter(sprintf('sylius.email.%s.from_email', $emailType), array($fromEmail['address'] => $fromEmail['sender_name']));
$container->setParameter(sprintf('sylius.email.%s.template', $emailType), $config[$emailType]['template']);
if ($config['enabled'] && $config[$emailType]['enabled']) {
$loader->load('mailer/'.$emailType.'_listener.xml');
}
}
}
尝试将此添加到您的config.yml以使其正常工作:
sylius_core:
emails:
enabled: true
order_confirmation:
enabled: true
template: FooBundle:Checkout/Email:orderConfirmation.html.twig
from_email: { address: foo@bar.com, sender_name: Foo Bar }
注意,如果你想使用自己的模板,你应该从Sylius的orderConfirmation.html.twig
扩展。 Sylius的TwigSwiftMailer
邮件程序类需要模板中的subject
,body_text
和body_html
块。
答案 2 :(得分:0)
我还要补充一点,您可能还需要:
1)这在parameters.yml
中sylius.mailer.transport: smtp
sylius.mailer.host: localhost
sylius.mailer.user: info@xxxxx.com
sylius.mailer.password:xxxxxxx
2)如果您已覆盖SyliusWebBundle,请将Resources / Frontend / Emails文件夹移至您的包中
3)上面显示的参考资料为config.yml
4)您的自定义customerWelcome.html.twig和orderConfirmation.html.twig,这也意味着将其中的所有必需消息翻译为所有必需的语言。