1

我正在使用 Laravel 7 和 PHP 7.4。

我正在使用 Mailtrap 测试电子邮件。我刚刚将我的 Laravel 版本升级到 7.4,我的电子邮件已停止工作。当我尝试发送演示电子邮件时,它在下面给我一个错误

Trying to access array offset on value of type null

问题在这里:

 {{ $mailData['title'] }}

控制器:

class MailController extends Controller {

    public function sendEmail() {
        $email = 'positronx@gmail.com';

        $mailData = [
            'title' => 'Demo Email',
            'url' => 'https://www.positronx.io'
        ];

        Mail::to($email)->send(new EmailDemo($mailData));

        return response()->json([
            'message' => 'Email has been sent.'
        ], Response::HTTP_OK);
    }

}

邮件文件:

class EmailDemo extends Mailable
{
    use Queueable, SerializesModels;
    public $mailData;

    public function __construct()
    { }

    public function build()
    {
        return $this->markdown('email.demoEmail')
            ->with('mailData', $this->mailData);
    }
}

刀:

@component('mail::message')
     {{ $mailData['title'] }}

    The body of your message.

    @component('mail::button', ['url' => $mailData['url']])
        Button Text
    @endcomponent

    Thanks,<br>
    {{ config('app.name') }}
@endcomponent
4

2 回答 2

1

您忘记在 中设置 $mailData constructor(),将其传递给构造函数并将其设置为$this->maildata.

class EmailDemo extends Mailable
{
    use Queueable, SerializesModels;
    public $mailData;

    public function __construct($mailData)
    {
        $this->mailData = $mailData;
    }
}
于 2020-08-23T20:09:15.510 回答
1

您尚未$mailData在邮件通知类中初始化 。你可以这样做:

class EmailDemo extends Mailable
{
    //your other code
    public $mailData;

    public function __construct($mailData)
    {
        $this->mailData = $mailData;
    }
}

希望它现在可以工作。

于 2020-08-23T20:21:56.950 回答