【问题标题】:Error trying to send email through Gmail using SwiftMailer尝试使用 SwiftMailer 通过 Gmail 发送电子邮件时出错
【发布时间】:2017-07-05 10:28:47
【问题描述】:

我正在关注 Symfony 3 Documentation 从我的控制器发送电子邮件,但我收到了错误消息。我确保正确执行上述页面中的每个步骤,但没有用。

这是我的控制器的样子:

<?php

namespace MyBundle\Controller;

use Symfony\Bundle\FrameworkBundle\Controller\Controller;
use Sensio\Bundle\FrameworkExtraBundle\Configuration\Route;
use Symfony\Component\HttpFoundation\Response;

class DefaultController extends Controller
{
    /**
     * @Route("/")
     */
    public function indexAction(\Swift_Mailer $mailer)
    {
        $message = (new \Swift_Message('Hello Email'))
            ->setFrom('send@example.com')
            ->setTo('my.address@gmail.com')
            ->setBody(
                $this->renderView(
                    // app/Resources/views/Emails/registration.html.twig
                    'MyBundle::Emails/registration.html.twig',
                    array('name' => 'John Doe')
                ),
                'text/html'
            );

        $mailer->send($message);

        return new Response('<html<body>Sent</body></html>');
    }
}

这是我得到的错误:

Controller "MyBundle\Controller\DefaultController::indexAction()" 要求您为 "$mailer" 参数提供一个值。参数可以为空且未提供空值、未提供默认值或因为在此参数之后有一个非可选参数。

与文档页面相比,我很确定一切都是应有的,所以任何人都可以帮我找到这个错误的根源吗?

【问题讨论】:

    标签: php symfony swiftmailer


    【解决方案1】:

    只需从构造函数中删除 $mailer(您不在服务中,而是在控制器中),然后使用$this-&gt;get('mailer')-&gt;send($message);发送。 (同样,您在控制器中,您可以访问邮件服务,无需尝试将其注入构造函数)

    【讨论】:

    • 非常感谢这位工人。伙计,我希望 Symfony 有更好的文档。非常误导和混乱。一百万年后,我无法从文档中弄清楚这一点。
    【解决方案2】:

    我认为,您没有在项目设置中启用autowiring。因此,Swift_Mailer 不会自动注入。启用它或手动注入邮件服务。

    在 Symfony here 中查看有关自动装配的更多信息。

    【讨论】:

    • 感谢您的回答,但尾随反斜杠不就是为了这样做吗?此外,在您的链接上,它说默认情况下启用自动装配,那么我可以在哪里(以及如何)检查您是否正确?最后,我似乎无法在自动装配示例和我的控制器之间找到类比。能否提供示例代码?
    • 这里不需要自动装配,你在一个控制器中(扩展 Symfony\Bundle\FrameworkBundle\Controller\Controller),所以你已经可以访问容器和所有服务
    • @SamJanssens,首先,我认为,显式定义比调用服务定位器更好。其次,在我的回答中,我写了关于手动解析服务的内容。第三,我认为,topicstarter 有 Symfony
    猜你喜欢
    • 1970-01-01
    • 2015-05-05
    • 2023-03-08
    • 1970-01-01
    • 2016-06-03
    • 2015-12-21
    • 1970-01-01
    • 1970-01-01
    • 2018-07-26
    相关资源
    最近更新 更多