查看文档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找不到这种方法,我不知道如何解决我的问题。
有什么想法吗?
答案 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'
);