SwiftMailerBundle addPart не найден
Глядя в документацию swiftmailer, чтобы включить оба формата сообщения в текст в формате HTML, вам нужно использовать метод addPart
: swiftmailer 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 ответа
Это то, что я использую, и для меня это работает:
$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'
);
Если вы получаете это Method 'addpart' not found in \Swift_Mime_MimePart
сообщение в IDE, в моем случае 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);