Laravel + SendGrid htmlspecialchars()期望参数1为字符串,给定对象

时间:2019-07-13 12:38:50

标签: laravel sendgrid htmlspecialchars

我正在尝试通过Laravel中的Sendgrid发送电子邮件。我一直在关注Sendgrid's Knowledge Base Article on Sending Email with Laravel

我已经在.env文件中设置了所有内容(尽管我还必须更新MAIL_HOST中的~/config/mail.php),并且能够发送测试电子邮件(在刀片内进行操作。

电子邮件模板本身的刀片与SendGrid的文档完全相同:

<!DOCTYPE html>
    <html lang="en-US">
        <head>
            <meta charset="utf-8">
        </head>
        <body>
            <h2>Test Email</h2>
            <p>{{$message}}</p>
        </body>
    </html>

我在单独的刀片中运行的代码(我只是为了测试而已)是:

@php

use App\Mail\TestEmail;

$data = ['message' => 'Oh, hai!'];

Mail::to('john@doe.com')->send(new TestEmail($data));

@endphp

以上所述,我得到以下错误:

htmlspecialchars() expects parameter 1 to be string, object given (View: ~/resources/views/emails/test.blade.php) (View: ~/resources/views/emails/test.blade.php) (View: ~/resources/views/emails/test.blade.php)

当我不在刀片中使用{{ message }}时,一切都很好。

有人可以让我知道发生了什么事以及如何解决它吗?这是我第一次使用Laravel,任何可以将我指向正确方向的方法都可以。

1 个答案:

答案 0 :(得分:2)

$message是Laravel 5.6以来的保留变量,代表Illuminate\Mail\Message对象。

在Blade模板和PHP代码中用$message$content之类的东西替换$msg,一切正常!