我正在使用队列在以下代码的帮助下发送电子邮件:
<?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(new testNotify($data)); 因为我们不需要队列而不是按照 Laravel 版本 5.8 的文档发送
public function send(Request $request)
{
$data = $request->Text;
Mail::to('[email protected]')->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 ramework\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 时。我明白内容了。
非常感谢任何指导或帮助。
问题已解决...日志文件无法访问...当我们发送电子邮件时,系统会写入一些日志。当给予日志和其他目录适当的权限时...我能够接收内容。谢谢大家的帮助。
Мне это тоже помогло, выдать права на всю директорию проекта 777