我有一个表单,其中我将“收件人”,“发件人”,“主题”和“消息”作为输入。提交后,它会向指定客户(“收件人”)发送电子邮件。
我创建了一个“可邮寄的”对象,并在控制器中执行以下操作:
Mail::to($request['to'])->send(new SendMail($request['from'], $request['subject'], $request['message']));
这是我的可发送邮件的_constructor
构造函数
public function __construct($from, $sub, $msg)
{
$this->from = $from;
$this->sub = $sub;
$this->msg = $msg;
}
这里是构建方法
public function build()
{
return $this->from($address = $this->from, $name='Company Support')
->subject($this->sub)
->view('emails.sendmail');
}
我的日志文件里出现了如下错误:
字符串不支持[]运算符 {"exception":"[object] (Symfony\Component\Debug\Exception\FatalThrowableError(code: 0): [] operator not supported for strings at C:\xampp\htdocs\shopvel_\vendor\laravel\framework\src\Illuminate\Mail\Mailable.php:582) ....
我无法找出问题所在。我已经尝试了许多解决方案,但都没有奏效。例如,在build方法中删除from后,会显示以下内容:
local.ERROR: Illegal string offset 'address' {"exception":"[object] (ErrorException(code: 0): Illegal string offset 'address' at C:\xampp\htdocs\shopvel_\vendor\laravel\framework\src\Illuminate\Mail\Mailable.php:318)
编辑 1: 这是我的电子邮件视图:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>Mail</title>
</head>
<body>
{{ $msg }}
</body>
</html>
编辑2: 当我在构造函数
方法中传递两个变量时,它能够正常工作。例如:
Mail::to($request['to'])->send(new SendMail($request['from'], $request()->all()));
构造函数方法中传递变量是否有限制?
(我认为没有限制,因为构造函数可以接受任意数量的变量)
request
方法是一个集合(collection),而不是一个数组(array),所以您可以像这样使用它:$request->from
而不是$request['from']
。 - Joseph