图片未显示在队列中的邮件中 - 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('/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 Docs - Configuration - Configuration Caching

Laravel 6.x Docs - Queues - Queue Workers & Deployment

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

您无法从 local.You 获取图像,应该将此图像上传到服务器。然后提供该服务器图像 link。现在您可以通过电子邮件获取此图像。 您可以使用图像进行检查。 或者尝试使用 embed($pathToImage) }}">

使用 public_path() 代替 url()assets()public_path() 对我有用。