我正在尝试通过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,任何可以将我指向正确方向的方法都可以。
答案 0 :(得分:2)
$message
是Laravel 5.6以来的保留变量,代表Illuminate\Mail\Message
对象。
在Blade模板和PHP代码中用$message
或$content
之类的东西替换$msg
,一切正常!