找不到SwiftMailerBundle addPart

时间:2013-11-23 18:33:45

标签: symfony swiftmailer symfony-2.3

查看文档swiftmailer,为了将消息格式包含在HTML格式的文本中,您需要使用方法addPartswiftmailer doc

// Give it a body
->setBody('Here is the message itself')

// And optionally an alternative body
->addPart('<q>Here is the message itself</q>', 'text/html')

但令我惊讶的是Symfony2找不到这种方法,我不知道如何解决我的问题。

有什么想法吗?

2 个答案:

答案 0 :(得分:2)

如果您在IDE中收到此Method 'addpart' not found in \Swift_Mime_MimePart消息,在我的案例中是PHP Storm,那么我发现我必须将$message变量重新声明为\Swift_Message对象。

IDE正在使用父类Swift_Mime_MimePart的返回值类型,因为它使用父方法,因此它不接受子类Swift_Message中的子方法。

不是很整洁,因为它打破了方法链,但确实解决了分析错误:

$message = \Swift_Message::newInstance()
    ->setSubject('Hello Email')
    ->setFrom('send@example.com')
    ->setTo('recipient@example.com')
    ->setBody(
        $this->renderView(
            // app/Resources/views/Emails/registration.html.twig
            'Emails/registration.html.twig',
            array('name' => $name)
        ),
        'text/html'
    )
;
/* @var \Swift_Message $message */
$message
    ->addPart(
        $this->renderView(
            'Emails/registration.txt.twig',
            array('name' => $name)
        ),
        'text/plain'
    )
;
$this->get('mailer')->send($message);

答案 1 :(得分:0)

这是我使用的,对我来说这是有效的:

$message = \Swift_Message::newInstance()
                ->setSubject($subject)
                ->setFrom($from)
                ->setTo($emailAddress)
                ->setBody(
                    $this->templating->render(
                        $template.'.txt.twig',
                        $parameterArray
                    )
                )
                ->addPart(
                    $this->templating->render(
                        $template.'.html.twig',
                        $parameterArray
                    ),'text/html'
                );