【问题标题】:Laravel Mail ShouldQueue unable to pass variables to viewLaravel Mail ShouldQueue 无法将变量传递给查看
【发布时间】:2020-07-24 04:12:51
【问题描述】:

类似的问题还有很多,最接近的Laravel 6 Event Listener Mailable Queue unable to access

php:7.2
Laravel:5.7

  1. 控制器:
public function send_email(Request $request) {
    $data = $request->json()->all();
    //data: {"to":"email@to.me","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
    ));
}
  1. MailFromNewinc 可邮寄:
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');
    }
}
  1. sendmail_from_newinc 视图:
<body>
{{ $header??'no header' }}
<br>
{{ $msg??'no content' }}
</body>
</html>

结果:
考试科目
没有内容

如果我从可邮寄的 $msg 中删除 ShouldQueue 实现是可访问的,但如果我离开,$msg 为空。无论我是否在构建器中设置-&gt;with('msg', $this-&gt;msg);
$header 可以通过两种方式访问​​。

更新
如果我将变量名$header 更改为其他名称(可邮寄和视图中的任何地方),它也会停止工作。是保留字吗?

如果我离开但改变主题:

return $this->subject('custom subject')->view('emails.sendmail_from_newinc');

电子邮件仍然带有在$header 中定义的主题,而不是“自定义主题”。 :O

我已经尝试在控制器中渲染邮件:

return (new MailFromNewinc($data['subject'], $data['msg']))->render();

它会按顺序显示所有内容,所有变量都已到位。

我不知道我是怎么搞砸的,我有另一个邮件,具有几乎相同的设置,但在 __construct 函数中有一个 $header 和一个自定义模型,并且所有内容都可以在它的视图中访问。

【问题讨论】:

    标签: php laravel laravel-5.7


    【解决方案1】:

    好的,现在我找到了问题:我必须重新启动队列工作程序。
    我真的不知道它是如何工作的,但有些东西卡住了,因为当我改变了可邮寄构建功能中的视图时,它仍然与以前的视图一起发送。
    队列重启后一切正常。

    【讨论】:

      猜你喜欢
      • 2023-03-23
      • 1970-01-01
      • 2015-01-11
      • 2021-04-22
      • 2016-12-19
      • 1970-01-01
      • 2013-12-05
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多