2017-04-15 50 views
0

PDF附件我试图创建使用Symfony的2.8和SwiftMailer包2.5,在这里我用一个简单的HTML邮件PDF文件发送到一个地址一个SwiftMailer消息。我可以发送电子邮件,但所有的示例代码使用方法,如addPart()和附加(),它不通过Swift_Message给出的方法列表存在,我无法找到使用别的任何例子。PHP的Symfony 2.8 Swiftmailer捆绑2.5,创建消息,从代码

我创建渲染嫩枝模板PDF,然后创建一个消息,将其附加到

$pdf = $this->get('knp_snappy.pdf')->getOutputFromHtml($response); 

$message = \Swift_Message::newInstance() 
       ->setSubject('Hello Email') 
       ->setFrom('[email protected]') 
       ->setTo('[email protected]') 
       ->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类是几层向上类层次结构,并且永远不会在代码中直接调用或引用它。在所有的单个方法调用,它们都在端return $this,它返回对象作为通用型的,其中该方法位于最低层级的实例

+0

我觉得这里存在一些缺失的代码,它会显示这个问题。您可以包括从点的所有代码,你创建'$ message'变量您尝试运行'附加()'方法的地步? – Augwa

+0

@Augwa - 它被复制几乎直接从 Swiftmailer文档本身http://swiftmailer.org/docs/messages.html这就是为什么我很困惑。我创建该消息,然后尝试立即“附加()”。它们之间应该有代码吗? –

+0

我也尝试过重新安装整个包。我可以尝试回滚到旧版本,看看能否解决,但很多其他bundle的依赖这一个如FOSUserBundle所以我估计这将配备了一套关于自己的问题。 –

回答

0

寻找。

既然在PHP中的泛型类型加载,setBody返回Swift_Mime_MimePart而其他方法返回Swift_Mime_SimpleMessage,而不是? extends Swift_Mime_MimePart? extends Swift_Mime_SimpleMessage。因为例如,在相同链设置消息和setBody是称为最后的方法,$message现在是一个Swift_Mime_MimePart代替Swift_Message其中attach()法等的位置。

溶液因此是相当简单的;放在不同的线路的电话,以$消息停留在Swift_Message

$message = \Swift_Message::newInstance(); 
$message->setSubject('Hello Email') 
$message->setFrom('[email protected]') 
$message->setTo('[email protected]') 
$message->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->attach($attachment);