现在我尝试将我的应用程序从 Laravel 5.3 升级到 5.4。除了我为 Mailjet 定制的邮件驱动程序外,一切都运行良好。
我设置了一个自定义 MailServiceProvider 来注册 Mailjet 驱动程序。现在它看起来链接了这个(并且在 5.3 上工作得很好):
<?php
namespace App\Providers;
class MailServiceProvider extends \Illuminate\Mail\MailServiceProvider
{
public function registerSwiftTransport()
{
$this->app['swift.transport'] = $this->app->share(function ($app) {
return new \App\Mail\Transport\TransportManager($app);
});
}
}
在 Laravel 5.4 中不再支持 share-function。推荐使用 singleton()。所以我尝试了几件事。我认为通过以下代码,我非常接近一个可行的解决方案:
public function registerSwiftTransport()
{
$this->app->singleton('swift.transport', function ($app) {
return new \App\Mail\Transport\TransportManager($app);
});
}
但是在这里我得到一个 500 错误,因为 HandleExceptions.php 空间不足。
我还尝试将自定义 TransportManager.php 文件移动到 \App\Providers\ 并更改返回行,如下所示:
return new \App\Providers\TransportManager($app);
这里它说“找不到类'App\Providers\TransportManager'”。但是:是的,该文件位于正确的目录中。
任何想法如何通过一些简单的步骤解决我缺少共享功能的问题,或者您是否认为我必须过度考虑我的整个邮件驱动程序安装。
谢谢