无法在 Laravel 中发送邮件

Ish*_*aan 3 php email laravel-5.7

我有一个表单,其中我可以将tofromsubjectmessage作为输入。提交后,它会向指定的客户端发送一封电子邮件 ( to )。

我创建了一个Mailable并在控制器中执行类似的操作

Mail::to($request['to'])->send(new SendMail($request['from'], $request['subject'], $request['message']));
Run Code Online (Sandbox Code Playgroud)

这是我的可邮寄_constructor

public function __construct($from, $sub, $msg)
{
        $this->from = $from;
        $this->sub = $sub;
        $this->msg = $msg;
}
Run Code Online (Sandbox Code Playgroud)

这是构建方法

 public function build()
 {
          return $this->from($address = $this->from, $name='Company Support')
                      ->subject($this->sub)
                      ->view('emails.sendmail');
 } 
Run Code Online (Sandbox Code Playgroud)

在我的日志文件中,我收到类似的错误

字符串不支持 [] 运算符 {"exception":"[object] (Symfony\Component\Debug\Exception\FatalThrowableError(code: 0): C:\xampp\htdocs\shopvel_\vendor 中的字符串不支持 [] 运算符\laravel\framework\src\Illuminate\Mail\Mailable.php:582) ....

我不知道我哪里出了问题。我尝试了很多解决方案,但没有成功。例如,构建方法中删除然后它显示

local.ERROR:非法字符串偏移“地址”{“异常”:“[对象](ErrorException(代码:0):C:\ xampp \ htdocs \ shopvel_ \供应商\ laravel \框架\ src处非法字符串偏移“地址” \照亮\邮件\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> 
Run Code Online (Sandbox Code Playgroud)

编辑2:当我在方法中传递两个变量时, constructor 它工作正常,就像

<!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> 
Run Code Online (Sandbox Code Playgroud)

构造方法中传递变量有什么限制吗?

(我不这么认为,因为构造函数可以采用任意数量的变量)

小智 5

构造函数中的 $from 参数与 Mailable 类中的 $from 公共属性冲突(并覆盖)。

public function __construct($from, $sub, $msg)
Run Code Online (Sandbox Code Playgroud)

把它改成这样...

public function __construct($fromAddress, $sub, $msg)
Run Code Online (Sandbox Code Playgroud)

它会工作得很好