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。
我在使用 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。