【问题标题】:Mailer::send() should not be called statically [duplicate]Mailer::send() 不应该被静态调用[重复]
【发布时间】:2015-04-29 22:35:01
【问题描述】:

我正在使用 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');
});

【问题讨论】:

  • 您的文件顶部是否有声明 use Illuminate\Mail\Mailer as Mail;
  • 我想你只需要添加use Mail;在文件的顶部。

标签: php email laravel laravel-5


【解决方案1】:

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

'aliases' => array(
    'App'             => 'Illuminate\Support\Facades\App',
    'Artisan'         => 'Illuminate\Support\Facades\Artisan',
    // ...
)

确保别名 Mail 在该数组中。它应该指向Illuminate\Support\Facades\Mail 门面。

所以你的别名数组应该是这样的:

'aliases' => array(
    'App'             => 'Illuminate\Support\Facades\App',
    'Artisan'         => 'Illuminate\Support\Facades\Artisan',
    // ...
    'Mail'            => 'Illuminate\Support\Facades\Mail',
    // ...
)

【讨论】:

    【解决方案2】:

    添加反斜杠以确保您使用的是 Facade:

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

    否则,如果你不想使用门面,最好在构造函数中注入邮件程序

    <?php namespace App\Some\Namespace;
    
    use Illuminate\Contracts\Mail\Mailer;
    
    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');
            });
        }
    }
    

    【讨论】:

      猜你喜欢
      • 2021-03-06
      • 2018-10-10
      • 2015-04-18
      • 2015-05-28
      • 1970-01-01
      • 1970-01-01
      • 2013-11-10
      • 2021-05-31
      • 1970-01-01
      相关资源
      最近更新 更多