【问题标题】:Laravel class not found for mail找不到邮件的 Laravel 类
【发布时间】:2019-08-08 11:54:28
【问题描述】:

我正在尝试在我正在构建的网站上有新注册时向网站管理员生成通知电子邮件。

我在 App\Mail\SignedUp.php 中有一个名为 SignedUp 的邮件类。

在 Illuminate/Foundation/Auth/RegistersUser 文件中,我有以下内容:

namespace Illuminate\Foundation\Auth;

use App\Organization;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Auth;
use Illuminate\Auth\Events\Registered;
use App\Mail\SignedUp;

trait RegistersUsers
{
    use RedirectsUsers;

    /**
     * Show the application registration form.
     *
     * @return \Illuminate\Http\Response
     */
    public function showRegistrationForm()
    {
        $organizations = Organization::all();

        return view('auth.register', compact('organizations'));
    }

    /**
     * Handle a registration request for the application.
     *
     * @param  \Illuminate\Http\Request  $request
     * @return \Illuminate\Http\Response
     */
    public function register(Request $request)
    {

        $this->validator($request->all())->validate();

        event(new Registered($user = $this->create($request->all())));

        $this->guard()->login($user);

        Mail::to('example@example.com')->send(new SignedUp($user));        

        return $this->registered($request, $user)
                        ?: redirect($this->redirectPath());
    }

当我注册新用户时,我收到以下消息: 找不到类“Illuminate\Foundation\Auth\Mail”

如果我将use App\Mail\SignedUp; 更改为use App\Mail;,错误仍然是:Class 'Illuminate\Foundation\Auth\Mail' not found

use Mail; 给我 Illuminate\Foundation\Auth\SignedUp' not found

use App\Mail\SignedUp; 给了我Class 'Illuminate\Foundation\Auth\Mail' not found

根本没有尝试导入该类,而是将我的声明更改为:\Mail::to('example@example.com')->send(new SignedUp($user));,我得到 Class 'Illuminate\Foundation\Auth\SignedUp' not found

A 无法弄清楚如何让它找到我的邮件类。

我只是在黑暗中猜测和射击 - 谁能看出我做错了什么?

这是我的邮件类文件:

<?php

namespace App\Mail;

use Illuminate\Bus\Queueable;
use Illuminate\Mail\Mailable;
use Illuminate\Queue\SerializesModels;
use Illuminate\Contracts\Queue\ShouldQueue;

class SignedUp extends Mailable
{
    use Queueable, SerializesModels;

    public $url = 'https://av-cuauhtemoc.org/users';

    public $user;

    /**
     * Create a new message instance.
     *
     * @return void
     */
    public function __construct()
    {
        //
    }

    /**
     * Build the message.
     *
     * @return $this
     */
    public function build()
    {
        return $this->from('example@example.com')->view('emails.new-registration');
    }
}

【问题讨论】:

  • 你能在这里添加你的邮件类文件吗?我认为你的命名空间有问题
  • @Zartosht 刚刚添加。

标签: laravel class email namespaces laravel-mail


【解决方案1】:

首先你不应该改变Illuminate/Foundation/Auth/RegistersUser文件,而是你必须在你的RegisterController中覆盖这个方法:

use App\Mail\SignedUp;
use Illuminate\Auth\Events\Registered;
use Illuminate\Http\Request;
use Mail;

public function register(Request $request)
    {
        $this->validator($request->all())->validate();

        event(new Registered($user = $this->create($request->all())));

        $this->guard()->login($user);

        Mail::to('example@example.com')->send(new SignedUp($user));

        return $this->registered($request, $user)
            ?: redirect($this->redirectPath());
    }

【讨论】:

    【解决方案2】:

    我终于偶然发现了答案。 我还需要导入使用Illuminate\Support\Facades\Mail; 类。

    所以这行得通:

    use App\Mail\Signedup;
    use Illuminate\Support\Facades\Mail;
    

    【讨论】:

      猜你喜欢
      • 2021-03-09
      • 2022-11-29
      • 2015-03-21
      • 1970-01-01
      • 2019-06-04
      • 1970-01-01
      • 1970-01-01
      • 2017-09-16
      • 1970-01-01
      相关资源
      最近更新 更多