有许多类似的问题,最接近的是Laravel 6 Event Listener Mailable Queue unable to access。
php:7.2Laravel:5.7
public function send_email(Request $request) {
$data = $request->json()->all();
//data: {"to":"[email protected]","msg":"test message","subject":"test subject"}
Mail::to($data['to'])->send(new MailFromNewinc( $data['subject'], $data['msg']));
return Response::json(array(
'error' => false,
'status_code' => 200
));
}
namespace App\Mail;
use Illuminate\Bus\Queueable;
use Illuminate\Mail\Mailable;
use Illuminate\Queue\SerializesModels;
use Illuminate\Contracts\Queue\ShouldQueue;
class MailFromNewinc extends Mailable implements ShouldQueue
{
use Queueable, SerializesModels;
public $msg;
public $header;
public function __construct($header, $msg)
{
$this->msg = $msg;
$this->header = $header;
}
public function build()
{
return $this->subject($this->header)
->view('emails.sendmail_from_newinc');
}
}
<body>
{{ $header??'no header' }}
<br>
{{ $msg??'no content' }}
</body>
</html>
结果:考试科目没有内容
如果我从可邮寄的$ msg中删除ShouldQueue
工具,则可以访问,但是如果我留下,则$ msg为null。无论我是否在构建器->with('msg', $this->msg);
中设置$ header可以通过两种方式访问。
您将尝试按照以下方式进行操作-
public function build()
{
$header = $this->header;
$msg = $this->msg;
return view('emails.sendmail_from_newinc', compact('header','msg'));
}