错误Symfony 3与Monolog&快速邮件

时间:2016-02-24 10:02:52

标签: swiftmailer symfony monolog

我在Symfony 3.0.2上遇到了swift mailer和monolog的问题:

  

appDevDebugProjectContainer.php第4963行中的FatalThrowableError:   类型错误:传递给SymfonyBundleMonologBu​​ndleSwiftMailerMessageFactory_0000000079e53f2b00000001716bb61a50d0bc982eb9e83148fbcc469ab36a58 :: __ construct()的参数1必须是Swift_Mailer的一个实例,给出Closure的实例,在4043行的/Users/Romain/Sites/var/cache/dev/appDevDebugProjectContainer.php中调用

# Swiftmailer Configuration config.yml
swiftmailer:
    transport: "%mailer_transport%"
    host:      "%mailer_host%"
    username:  "%mailer_user%"
    password:  "%mailer_password%"
    spool:     { type: memory }

#Monolog config_prod.yml
monolog:
    handlers:
        main:
            type:         fingers_crossed
            action_level: critical
            handler:      grouped
        grouped:
            type:    group
            members: [streamed, buffered]
        streamed:
            type:  stream
            path:  "%kernel.logs_dir%/%kernel.environment%.log"
            level: debug
        buffered:
            type:    buffer
            handler: swift
        swift:
            type:       swift_mailer
            from_email: no-reply@email.com
            to_email:   email@email.com
            subject:    "Subject"
            level:      debug

第4963行提取appDevDebugProjectContainer.php

/**
     * {@inheritDoc}
     */
    public function __construct(\Swift_Mailer $mailer, $fromEmail, $toEmail, $subject, $contentType = null)
    {
        static $reflection;

        if (! $this->valueHolder56d41e956b1f5441039037) {
            $reflection = $reflection ?: new \ReflectionClass('Symfony\\Bundle\\MonologBundle\\SwiftMailer\\MessageFactory');
            $this->valueHolder56d41e956b1f5441039037 = $reflection->newInstanceWithoutConstructor();
        \Closure::bind(function (\Symfony\Bundle\MonologBundle\SwiftMailer\MessageFactory $this) {
            unset($this->mailer, $this->fromEmail, $this->toEmail, $this->subject, $this->contentType);
        }, $this, 'Symfony\\Bundle\\MonologBundle\\SwiftMailer\\MessageFactory')->__invoke($this);

        }

        $this->valueHolder56d41e956b1f5441039037->__construct($mailer, $fromEmail, $toEmail, $subject, $contentType);
    }

第4043行提取appDevDebugProjectContainer.php

/**
     * Gets the 'monolog.handler.swift.mail_message_factory' service.
     *
     * This service is shared.
     * This method always returns the same instance of the service.
     *
     * This service is private.
     * If you want to be able to request this service from the container directly,
     * make it public, otherwise you might end up with broken code.
     *
     * @param bool    $lazyLoad whether to try lazy-loading the service with a proxy
     *
     * @return \Symfony\Bundle\MonologBundle\SwiftMailer\MessageFactory A Symfony\Bundle\MonologBundle\SwiftMailer\MessageFactory instance.
     */
    public function getMonolog_Handler_Swift_MailMessageFactoryService($lazyLoad = true)
    {
        if ($lazyLoad) {

            return $this->services['monolog.handler.swift.mail_message_factory'] = new SymfonyBundleMonologBundleSwiftMailerMessageFactory_0000000057f95edf000000015dd8d44e50d0bc982eb9e83148fbcc469ab36a58(
                function (&$wrappedInstance, \ProxyManager\Proxy\LazyLoadingInterface $proxy) {
                    $wrappedInstance = $this->getMonolog_Handler_Swift_MailMessageFactoryService(false);

                    $proxy->setProxyInitializer(null);

                    return true;
                }
            );
        }

        return new \Symfony\Bundle\MonologBundle\SwiftMailer\MessageFactory($this->get('swiftmailer.mailer.default'), 'contact@domaine.com', array(0 => 'error@domaine.com'), 'Une erreur critique est survenue', NULL);
    }

只向swiftmailer发送电子邮件。

我已经拥有相同环境的配置,但symfony 2.7可以使用。

此配置适用于wamp(php7),但不适用于我的环境OSX和服务器Linux ......

感谢您的帮助

1 个答案:

答案 0 :(得分:0)

修复symfony 3.0.3和monolog 1.18