【问题标题】:Swiftmailer pdf attachment from snappy bundle来自 snappy bundle 的 Swiftmailer pdf 附件
【发布时间】:2020-03-04 13:38:50
【问题描述】:

我有一个函数downloadPdf($id, \Knp\Snappy\Pdf $snappy, Request $request)

此函数下载包含对象信息的 pdf,一切正常。

这是函数:

public function downloadPdf($id, \Knp\Snappy\Pdf $snappy, Request $request): Response
{
    //search id
    $workOrder = $this->getDoctrine()->getRepository(WorkOrders::class)->find($id);

    //data to pdf template
    $html = $this->renderView('pdf/pdf.html.twig', array(
        'workOrder' => $workOrder,
    ));


    //name file
    $filename = $workOrder->getId();

    //download pdf
    return new PdfResponse(
        $snappy->getOutputFromHtml($html),
        $filename.'.pdf'
    );
}

然后我有一个快速邮件功能:

//check if signed and if check is true
        if ($data_uri) {
            //send workOrder to company
            if ($check == true) {
                $transport = (new \Swift_SmtpTransport('smtp.sendgrid.net', 587))
                    ->setUsername('sendgridUSERNAME')
                    ->setPassword('sendgridPASSWORD')
                    ;

                $mailer = new \Swift_Mailer($transport);

                $message = (new \Swift_Message('Werkbon '.$workOrder->getTitel()))
                    ->setFrom(['xxx' => 'xxx'])
                    ->setTo('xxx')
                    ->setBody('xxx')
                    ->attach(\Swift_Attachment::fromPath($this->downloadPdf()))
                    ;

                $result = $mailer->send($message);
            }

电子邮件工作正常,但我想在上面的代码中将其他函数的 pdf 附加到这封电子邮件中,您可以看到我尝试过的内容,但我认为我完全错了。 我不知道从哪里开始。

有人可以在正确的方向上给我一点推动吗? 谢谢!

【问题讨论】:

    标签: php symfony sendgrid swiftmailer


    【解决方案1】:

    这对我来说是这样的,

    $invoicepdf = $this->get('knp_snappy.pdf')->getOutputFromHtml($html);
    
    
    
    /* And instead of returning pdf, send it with mailer: */
    
    $message = \Swift_Message::newInstance()
        ->setSubject('YOUR_TITLE')
        ->setFrom('foo@from.net')
        ->setTo('foo@to.net')
        ->attach(\Swift_Attachment::newInstance($invoicepdf, 'your_file_name','application/pdf'))
        ->setBody("yyy");
    $mailer->send($message);
    

    【讨论】:

    • 感谢您的评论,我通过在发送之前保存 pdf 来修复它。但是newInstance 是什么意思?
    猜你喜欢
    • 2014-03-28
    • 2015-05-15
    • 2017-09-11
    • 2015-01-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-06-15
    相关资源
    最近更新 更多