Laravel 7 发送电子邮件时内部服务器错误 500

Laravel 7 internal server error 500 when sending email

我在使用 laravel 发送电子邮件时遇到了一些问题。我在 Whosebug 上四处寻找解决方案,但 none 到目前为止有效。到目前为止,这是我的环境和代码。

MAIL_DRIVER=smtp
MAIL_HOST=smtp.googlemail.com
MAIL_PORT=465
MAIL_USERNAME=myemail.gmail.com
MAIL_PASSWORD=mypassword
MAIL_ENCRYPTION=ssl
MAIL_SETUP=false

MAIL_FROM_ADDRESS=myemail.gmail.com
MAIL_FROM_NAME="Namehere"

这是我的 mail.php 文件

'smtp' => [
        'transport' => 'smtp',
        'host' => env('MAIL_HOST', 'smtp.googlemail.com'),
        'port' => env('MAIL_PORT', 465),
        'encryption' => env('MAIL_ENCRYPTION', 'ssl'),
        'username' => env('MAIL_USERNAME'),
        'password' => env('MAIL_PASSWORD'),
        'timeout' => null,
        'auth_mode' => null,
    ],

  'from' => [
    'address' => env('MAIL_FROM_ADDRESS', 'myemail@gmail.com'),
    'name' => env('MAIL_FROM_NAME', 'myemail@gmail.com'),
],

现在这是我的代码。只是简单的测试邮件功能。这是在邮件文件夹

中创建的class
<?php

namespace App\Mail;

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

class NewTicketMail extends Mailable
{
use Queueable, SerializesModels;
public $details;

/**
 * Create a new message instance.
 *
 * @return void
 */
public function __construct($details)
{
    $this->$details;
}

/**
 * Build the message.
 *
 * @return $this
 */
public function build()
{
    return $this->subject('Mail from ')->view('emails.new_ticket_mail');
}
}

这是名为

的路线
Route::get('send-email', function(){
$details = [
    'title'=> 'New Ticket Received',
    'body' => 'We have received your ticket and will process it. Please do not reply to this 
   email'
];

 \Mail::to('receiver@gmail.com')->send(new \App\Mail\NewTicketMail($details));
return view('emails.thanks');
});

如果我注释掉 Mail to 行,该路由有效。有什么建议么?我已经用了几个小时了。

在您的邮件 class 中,您正在访问一个不存在的属性 属性。

而是在您的可邮寄构造函数中执行类似

的操作
public function __construct($details){
    $this->details = $details;
}

这肯定是一个问题。因为 laravel 会抛出一个未知的 属性 错误。

P.s。如果您没有在日志中看到错误,请确保您的环境将 debug 设置为 true。