Symfony 西利斯:梅勒不工作了,加上我自己的
自从2月份我开始与Sylius合作以来,我在电子商务过程中的任何一个环节都没有收到过电子邮件。不是在注册时,也不是在订单完成时 现在我假设根本不支持这个,于是我开始编写自己的邮件程序,接受订单和用户对象来填写邮件。今天我发现,Symfony 西利斯:梅勒不工作了,加上我自己的,symfony,swiftmailer,sylius,Symfony,Swiftmailer,Sylius,自从2月份我开始与Sylius合作以来,我在电子商务过程中的任何一个环节都没有收到过电子邮件。不是在注册时,也不是在订单完成时 现在我假设根本不支持这个,于是我开始编写自己的邮件程序,接受订单和用户对象来填写邮件。今天我发现,SyliusCoreBundle中有一个邮件程序根本无法发送任何电子邮件 手动调用SwiftMailer可以很好地发送电子邮件——在开发环境中,它甚至可以将电子邮件发送到config\u dev.yml中定义的开发人员电子邮件地址 这给我带来了两个问题: Sylius Ma
SyliusCoreBundle
中有一个邮件程序根本无法发送任何电子邮件
手动调用SwiftMailer
可以很好地发送电子邮件——在开发环境中,它甚至可以将电子邮件发送到config\u dev.yml
中定义的开发人员电子邮件地址
这给我带来了两个问题:
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 }
我之前也在尝试解决同样的问题,然后意识到,假设您希望启动订单确认侦听器,我需要定义参数
sylius.email.order_confirmation.template
及
在Sylius/Bundle/CoreBundle/Resources/config/mailer/order\u confirmation\u mailer.xml中使用,但从未定义。欢迎电子邮件的类似要求。希望这有帮助 查看
SyliusCoreExtension
类中的loadEmailsConfiguration()
方法(复制如下)。在注册之前,它会检查您是否已启用电子邮件侦听器并正确配置它
//src/Sylius/Bundle/CoreBundle/DependencyInjection/SyliusCoreExtension.php
受保护的函数loadEmailsConfiguration(数组$config、ContainerBuilder$container、XmlFileLoader$loader)
{
foreach($this->emailas$emailType){
$loader->load('mailer/'。$emailType.'u mailer.xml');
$fromEmail=isset($config[$emailType]['from_email'])?$config[$emailType]['from_email']:$config['from_email'];
$container->setParameter(sprintf('sylius.email.%s.from_email',$emailType),数组($fromEmail['address']=>$fromEmail['sender_name']);
$container->setParameter(sprintf('sylius.email.%s.template',$emailType),$config[$emailType]['template']);
如果($config['enabled']&&$config[$emailType]['enabled']){
$loader->load('mailer/'。$emailType.'u 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的TwigSwiftMailermailer类需要模板中的主题
、正文
和正文html
块。我还要补充一点,您可能还需要:
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,这也意味着将其中所有必需的消息转换为所有必需的语言
sylius.mailer.transport: smtp
sylius.mailer.host: localhost
sylius.mailer.user: info@xxxxx.com
sylius.mailer.password:xxxxxxx