Я использую очередь для отправки электронных писем с помощью приведенного ниже кода:
<?php
namespace App\Mail;
use Illuminate\Bus\Queueable;
use Illuminate\Mail\Mailable;
use Illuminate\Queue\SerializesModels;
use Illuminate\Contracts\Queue\ShouldQueue;
use App\Models\Userprofile;
class testNotify extends Mailable implements ShouldQueue
{
use Queueable, SerializesModels;
public $data;
/**
* Create a new message instance.
*
* @return void
*/
public function __construct($data)
{
$this->data = $data;
}
/**
* Build the message.
*
* @return $this
*/
public function build()
{
return $this->view('emails.testnotify');
}
}
В части контроллера я использую send -> send (новый testNotify ($ data)); Поскольку нам не нужна очередь вместо отправки согласно документу Laravel версии 5.8
public function send(Request $request)
{
$data = $request->Text;
Mail::to('anymail@gmail.com')->send(new testNotify($data));
\Session::put('successmessage','Sent');
return Redirect::back();
}
Я использую представление:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html>
<head>
<title>Laravel Send Email Example</title>
</head>
<body>
<h1>Thank you, {{ $data }}</h1>
</body>
</html>
Теперь, когда я пытаюсь отправить, в полученном письме нет содержимого.
Я отладил весь класс vendor \ laravel \ framework \ src \ Illuminate \ Mail \ Mailer.php и обнаружил, что функция renderView не может отобразить представление.
protected function renderView($view, $data)
{
return $view instanceof Htmlable
? $view->toHtml()
: $this->views->make($view, $data)->render();
}
Я также изменил Doctype представления на HTML5, но получил тот же результат без содержимого.
Представление рендеринга выполняет view-> toHtml () вместо $this-> views-> make
Правильно ли используется HTML-код представления?или Я пропустил какую-либо конфигурацию в очереди.
Обратите внимание, что при удалении реализует ShouldQueue.Я получаю содержание.
Очень ценю любые рекомендации или помощь.