繁体   English   中英

图片未显示在队列中的邮件中 - laravel

[英]image not displaying in mail in queue - laravel

在我的邮件模板中,我使用了如下图像路径:

<img src="{{ URL::to('/images/logo.png') }}" alt="logo" download="false" style="width:50%">

它适用于普通邮件(没有队列),但不适用于队列中的邮件。

通过检查邮件中的元素,我发现正常邮件图像路径如下:

https://app.site_domain.com/images/logo.png //as expected 

但对于邮件队列,它是:

http://localhost/images/logo.png

您必须为您的应用程序设置一个 URL 以便控制台命令知道什么 URL 用于您的应用程序 URL 没有将信息传递给它的网络服务器生成请求。

为此,您可以在.env文件中设置APP_URL

APP_URL=https://app.site_domain.com

默认情况下,它设置为http://localhost ,这就是显示的原因。

如果您的配置被缓存,您将需要清除它或再次缓存它:

php artisan config:cache 

您最有可能需要停止队列工作人员,(在处理任何当前作业后使队列工作人员死亡的命令):

php artisan queue:restart

然后你可以再次启动它们,或者希望你有监控这些进程的东西,并在它们死后重新启动它们。

Laravel 6.x 文档 - 配置 - 配置缓存

Laravel 6.x 文档 - 队列 - 队列工作者和部署

使用public_path()代替url()assets() public_path()正在为我工作。

尝试。 asset()

<img src="{{ asset('images/logo.png') }}" alt="logo" download="false" style="width:50%">

尝试像这样使用url助手: {{ url('/images/logo.png') }}

  • 你有没有在.env 文件中设置你的 APP_URL
  • 你应该使用<img src="{{ $message->embed($pathToImage) }}">而不是 URL

如果您在队列工作程序运行时已将 .env 从 localhost 更新为 app.site_domain.com,您可能需要重新启动主管/工作人员队列。 清除和重新缓存配置不会更新主管中的设置(当然,如果您使用主管来管理队列)。

您没有从本地获取图像。您应该将此图像上传到服务器。然后提供该服务器图像链接。 现在您可以在 email 上获取此图像。 您可以使用图像进行检查。 或尝试使用 embed($pathToImage) }}">

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM