【发布时间】:2017-09-11 14:22:42
【问题描述】:
我正在尝试使用 Symfony 2.8 和 SwiftMailer Bundle 2.5 创建一个 SwiftMailer 消息,在其中我将带有简单 HTML 消息的 PDF 发送到一个地址。我可以发送电子邮件,但是所有示例代码都使用了诸如 addPart() 和 attach() 之类的方法,这些方法在Swift_Message 给出的方法列表中不存在,而且我找不到任何使用其他方法的示例。
我从渲染的 Twig 模板创建 PDF,然后创建一条消息以将其附加到
$pdf = $this->get('knp_snappy.pdf')->getOutputFromHtml($response);
$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' => "test")
),
'text/html'
);
附件:
$attachment = \Swift_Attachment::newInstance($pdf, $pdf_name, 'application/pdf');
两者
$message->addPart($attachment, $contentType = "application/pdf", $charset = null);
和
$message->attach(\Swift_Attachment::fromPath('/path/to/image.jpg')->setFilename('myfilename.jpg'));
方法根本不存在。
奇怪的是,突出显示的消息说
Method 'attach' not found in class \Swift_Mime_MimePart less...
Referenced method is not found in subject class.
但是鉴于Swift_Mime_MimePart 类在类层次结构中向上几层并且从未在代码中直接调用或引用,因此我无法弄清楚它的来源或如何正确调用消息类.
【问题讨论】:
-
我觉得这里缺少一些代码会显示问题。您能否包含从创建
$message变量到尝试运行attach()方法的所有代码? -
@Augwa - 它几乎是直接从 Swiftmailer 文档本身swiftmailer.org/docs/messages.html 复制而来的,这就是我如此困惑的原因。我创建消息,然后立即尝试
attach()。中间应该有代码吗? -
我也尝试过重新安装整个捆绑包。我可以尝试回滚到旧版本以查看是否可以修复它,但是许多其他捆绑包都依赖于这个捆绑包,例如 FOSUserBundle,所以我认为它本身会带来一系列问题。
-
我认为这不是问题所在。你说你说它是
pretty much straight,这并不完全意味着。我有 99.9% 的把握,如果您发布请求的所有代码,错误就会自行显现。 -
如果你只是做
$message = \Swift_Message::newInstance()->attach(...);会不会出错?
标签: php symfony email email-attachments swiftmailer