0

我需要发送一封附有 PDF 的电子邮件。使用 SnappyBundle 和 Swift Mailer,所有这些都非常简单。每当调用../document_name/{id}/mailpdf 并发送电子邮件时。

为了尝试让用户 exp 更好一点,我决定用 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".
  • 生成 pdf 然后发送它的服务只要不被messenger:consume_messages.
  • 为了让 Swift Mailer 在我发送电子邮件时尽快发送电子邮件$msg->send();并且不将其假脱机,我将其注释掉,# spool: { type: 'memory' }否则在运行服务swiftmailer.yml时不会发送电子邮件。messenger:consume_messages
4

1 回答 1

0

不确定它的预期行为或不良做法是否对我不利,但是当进程/命令调用服务时,相对路径不起作用。所以解决方案很简单,而不是设置 wkhtmltopdf 可执行文件的相对路径,而是设置绝对路径。这看起来像这样:

# .env.local
WKHTMLTOPDF_PATH="../vendor/bin/wkhtmltopdf.exe.bat"
# changed to:
WKHTMLTOPDF_PATH="absolute/bath/to/vendor/bin/wkhtmltopdf.exe.bat"

希望这可以帮助某人

于 2019-03-16T18:25:58.330 回答