Mailer::send() 不应该静态调用



我正在开发一个网站,在Laravel尝试发送邮件之后。我收到一条错误消息:

非静态方法 Illuminate\Mail\Mailer::send() 不应静态调用,假设$this来自不兼容的上下文

我的代码:

Mail::send('emails.kontakt', array('name' => 'Elvis'), function($message)
{
$message->to('edautovic99@gmail.com', 'Elvis')->subject('edautovic99@gmail.com');
});

如果您使用的是 Mail::send() ,那么您必须在app/config/app.php配置文件中有一个别名。签出该文件并查找别名数组,如下所示:

'aliases' => array(
    'App'             => 'IlluminateSupportFacadesApp',
    'Artisan'         => 'IlluminateSupportFacadesArtisan',
    // ...
)

确保别名Mail位于该数组中。它应该指向IlluminateSupportFacadesMail立面。

所以你的别名数组应该看起来像这样:

'aliases' => array(
    'App'             => 'IlluminateSupportFacadesApp',
    'Artisan'         => 'IlluminateSupportFacadesArtisan',
    // ...
    'Mail'            => 'IlluminateSupportFacadesMail',
    // ...
)
在前面

加上反斜杠以确保您使用的是外观:

Mail::send('emails.kontakt', array('name' => 'Elvis'), function($message) {
    $message->to('edautovic99@gmail.com', 'Elvis')
            ->subject('edautovic99@gmail.com');
});

否则,如果您不想使用外观,最好在构造函数中注入邮件程序

<?php namespace AppSomeNamespace;
use IlluminateContractsMailMailer;
class MyClass
{
    private $mailer;
    public function __construct(Mailer $mailer)
    {
        $this->mailer = $mailer;
    }
    public function doMyMailThing()
    {
        $this->mailer->send('emails.kontakt', array('name' => 'Elvis'), function($message) {
            $message->to('edautovic99@gmail.com', 'Elvis')
                    ->subject('edautovic99@gmail.com');
        });
    }
}

最新更新