Symfony 西利斯:梅勒不工作了,加上我自己的

Symfony 西利斯:梅勒不工作了,加上我自己的,symfony,swiftmailer,sylius,Symfony,Swiftmailer,Sylius,自从2月份我开始与Sylius合作以来,我在电子商务过程中的任何一个环节都没有收到过电子邮件。不是在注册时,也不是在订单完成时 现在我假设根本不支持这个,于是我开始编写自己的邮件程序,接受订单和用户对象来填写邮件。今天我发现,SyliusCoreBundle中有一个邮件程序根本无法发送任何电子邮件 手动调用SwiftMailer可以很好地发送电子邮件——在开发环境中,它甚至可以将电子邮件发送到config\u dev.yml中定义的开发人员电子邮件地址 这给我带来了两个问题: Sylius Ma

自从2月份我开始与Sylius合作以来,我在电子商务过程中的任何一个环节都没有收到过电子邮件。不是在注册时,也不是在订单完成时

现在我假设根本不支持这个,于是我开始编写自己的邮件程序,接受订单和用户对象来填写邮件。今天我发现,
SyliusCoreBundle
中有一个邮件程序根本无法发送任何电子邮件

手动调用
SwiftMailer
可以很好地发送电子邮件——在开发环境中,它甚至可以将电子邮件发送到
config\u dev.yml
中定义的开发人员电子邮件地址

这给我带来了两个问题:

  • Sylius Mailer怎么会不能正常工作呢
  • 当订单完成或用户注册了新帐户时,如何最好地添加自己的邮件功能
  • 我已经看过“”了,它为第二个问题提供了一个潜在的解决方案,我想知道这是否是一条可行的道路

    编辑:我使用的是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 }
    

    我之前也在尝试解决同样的问题,然后意识到,假设您希望启动订单确认侦听器,我需要定义参数

    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的TwigSwiftMailer
    mailer类需要模板中的
    主题
    正文
    正文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