我需要发送一封附有PDF的电子邮件。使用SnappyBundle和Swift Mailer,所有这些操作都非常简单。每当致电../document_name/{id}/mail
时,都会生成pdf并发送电子邮件。
为了试图使用户体验更好,我决定用RabbitMQ实现Messenger组件以使此操作排队。但是,这时Snappy有点麻烦了。这是我得到的错误:
The exit status code '1' says something went wrong:
stderr: "The system cannot find the path specified.
"
stdout: ""
command: ..\vendor\bin\wkhtmltopdf.exe.bat --dpi "300" --image-quality 100 --page-size "A4" --footer-html "C:\Users\user\AppData\Local\Temp\knp_snappy5c8bfb5887e059.82496553.html" --header-html "C:
\Users\user\AppData\Local\Temp\knp_snappy5c8bfb588a7c92.82567496.html" "C:\Users\user\AppData\Local\Temp\knp_snappy5c8bfb588659c2.24298174.html" "C:\Users\user\AppData\Local\Temp\knp_snappy5c8bfb
5887d116.94779844.pdf".
messenger:consume_messages
不使用pdf,则生成pdf并将其发送的服务就可以正常工作。$msg->send();
之后立即发送电子邮件,并且不将其假脱机到内存中,我在# spool: { type: 'memory' }
上将swiftmailer.yml
注释掉了,否则电子邮件将不会messenger:consume_messages
进行服务时不会发送。答案 0 :(得分:0)
不知道它是我的预期行为还是不良做法,但是当进程/命令调用服务时,相对路径不起作用。因此,此解决方案很简单,无需为wkhtmltopdf可执行文件设置相对路径,而是设置绝对路径。看起来像这样:
# .env.local
WKHTMLTOPDF_PATH="../vendor/bin/wkhtmltopdf.exe.bat"
# changed to:
WKHTMLTOPDF_PATH="absolute/bath/to/vendor/bin/wkhtmltopdf.exe.bat"
希望这对某人有帮助