2014-06-17 2 views
1

2 월 Sylius와 작업하기 시작한 이래 전자 상거래 프로세스의 모든 단계에서 이메일을받지 못했습니다. 주문할 때가 아니라 주문할 때가 아닙니다.Sylius : 메일러가 작동하지 않습니다. 내 자신을 추가하십시오.

이제는이 문제에 대한 지원이 없다고 가정하고 메일을 채우기 위해 주문 및 사용자 개체를 허용하는 자체 메일러를 작성하기 시작했습니다. 오늘 나는 어떤 전자 메일도 전혀 보내지 못하는 SyliusCoreBundle의 메일러를 발견했습니다.

수동으로 SwiftMailer을 호출하면 개발 환경에서 config_dev.yml에 정의 된 개발자 전자 메일 주소로 전자 메일을 보냅니다.

이 두 가지 질문으로 날을 제공합니다 :

  1. 가 어떻게이 Sylius 메일러가해야처럼 작동하지 않는 될 수 있을까?
  2. 주문이 완료되거나 사용자가 새 계정을 등록한 경우 내 메일 링 기능을 추가하는 것이 가장 좋은 방법은 무엇입니까?

두 번째 질문에 대한 잠재적 인 해결책을 제시하는 "How to override Sylius email system"을 보았습니다. 이것이 갈 길인지 알고 싶습니다.

편집 : 나는 그것이이 시점에서 메일을 보낼 적이 있지만의 sylius.checkout.finalize.complete이 발사되어 나타납니다 Sylius 0.10.0x 을 사용하고 있습니다. 내가 수동으로 다른 곳을 호출 할 때 수행합니다

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 } 

답변

1

내가 매개 변수를 정의하는 데 필요한 것을, 당신은 주문 확인 리스너가 발사 할 가정하고 실현 이전에 같은 일을 알아 내려고 노력하고 있었다

sylius.email.order_confirmation.template 

및 Sylius/번들/CoreBundle/자원/설정/우편물/order_confirmation_mailer.xml에 사용되지만 정의되지 않습니다

sylius.email.order_confirmation.from_email 

. 환영 이메일에 대한 비슷한 요구 사항. 희망이 도움이!

1

SyliusCoreExtension 클래스 (아래 복사 됨)의 loadEmailsConfiguration() 메소드를 살펴보십시오. 등록하기 전에 전자 메일 수신기를 활성화하고 올바르게 구성했는지 확인합니다. 순서대로 config.yml이 추가

// 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'); 
     } 
    } 
} 

시도가 작동하세요 :

sylius_core: 
    emails: 
     enabled: true 
     order_confirmation: 
      enabled: true 
      template: FooBundle:Checkout/Email:orderConfirmation.html.twig 
      from_email: { address: [email protected], sender_name: Foo Bar } 

주, 당신은 당신이 Sylius의 orderConfirmation.html.twig에서 확장해야 자신의 템플릿을 사용하려는 경우. Sylius의 TwigSwiftMailer 메일러 클래스는 템플릿에 subject, body_textbody_html 블록이 필요합니다.

0

또한 다음과 같이 추가하겠습니다.

1) 매개 변수입니다.당신이 SyliusWebBundle를 오버라이드 (override) 한 경우 YML

sylius.mailer.transport: smtp 
sylius.mailer.host: localhost 
sylius.mailer.user: [email protected] 
sylius.mailer.password:xxxxxxx 

2), 자원/프런트 엔드를 이동/이메일은 번들

3) config.yml

4) 귀하의 사용자 정의 customerWelcome에 대한보다 위에 표시 기준에 폴더 .html.twig 및 orderConfirmation.html.twig는 필요한 모든 메시지를 필요한 모든 언어로 번역하는 것을 의미합니다.

관련 문제