无法在Laravel中发送邮件

时间:2019-08-31 11:37:50

标签: php email laravel-5.7

我有一个表单,可以在其中输入 主题消息。提交后,它将发送电子邮件到指定的客户端(收件人)。

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

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(代码:0):   的字符串不支持[]运算符   C:\ xampp \ htdocs \ shopvel_ \ vendor \ laravel \ framework \ src \ Illuminate \ Mail \ Mailable.php:582)   ....

我不知道我要去哪里。我尝试了许多解决方案,但是没有用。例如,在 build 方法中从中删除,然后显示

  

local.ERROR:非法字符串偏移量'address'{“ exception”:“ [对象]   (ErrorException(code:0):非法的字符串偏移量'address'位于   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:当我在constructor方法中传递两个变量时,它像

一样工作正常
Mail::to($request['to'])->send(new SendMail($request['from'], $request()->all()));

在构造方法中传递变量是否有限制?

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

1 个答案:

答案 0 :(得分:2)

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

public function __construct($from, $sub, $msg)

将其更改为类似的内容...

public function __construct($fromAddress, $sub, $msg)

它将正常工作